CLIPS 如何将文本分词?
CLIPS How to divide text into word?
我需要编写一个函数的方法来执行以下操作:
将文本分成单词;
打印与第一个单词不同的单词;
在此之前,每个词按照以下规则进行转换:
如果单词是奇数,则删除它的中间字母。
结果显示在屏幕上和文本文件中。
我建议您从一些基本文档开始。
一个例子:
你应该看看 multi-field built-in 函数。
这是一个可以为您提供不同单词列表的函数:
CLIPS>
(deffunction munge (?text)
(bind ?w1 (explode$ ?text))
(bind ?w2 (create$))
(progn$ (?w ?w1)
(bind ?len (str-length ?w))
(if (oddp ?len)
then
(bind ?nw (str-cat (sub-string 1 (div ?len 2) ?w)
(sub-string (+ (div ?len 2) 2) ?len ?w)))
(bind ?w2 (create$ ?w2 ?nw))
else
(bind ?w2 (create$ ?w2 (str-cat ?w)))))
(bind ?first (nth$ 1 ?w2))
(bind ?rest (rest$ ?w2))
(bind ?w3 (create$))
(progn$ (?w ?w2)
(if (neq ?w ?first)
then
(bind ?w3 (create$ ?w3 ?w))))
?w3)
CLIPS> (munge "red green blue purple brown green white red black blue")
("gren" "blue" "purple" "brwn" "gren" "whte" "blck" "blue")
CLIPS>
我需要编写一个函数的方法来执行以下操作:
将文本分成单词;
打印与第一个单词不同的单词;
在此之前,每个词按照以下规则进行转换:
如果单词是奇数,则删除它的中间字母。
结果显示在屏幕上和文本文件中。
我建议您从一些基本文档开始。
一个例子:
你应该看看 multi-field built-in 函数。
这是一个可以为您提供不同单词列表的函数:
CLIPS>
(deffunction munge (?text)
(bind ?w1 (explode$ ?text))
(bind ?w2 (create$))
(progn$ (?w ?w1)
(bind ?len (str-length ?w))
(if (oddp ?len)
then
(bind ?nw (str-cat (sub-string 1 (div ?len 2) ?w)
(sub-string (+ (div ?len 2) 2) ?len ?w)))
(bind ?w2 (create$ ?w2 ?nw))
else
(bind ?w2 (create$ ?w2 (str-cat ?w)))))
(bind ?first (nth$ 1 ?w2))
(bind ?rest (rest$ ?w2))
(bind ?w3 (create$))
(progn$ (?w ?w2)
(if (neq ?w ?first)
then
(bind ?w3 (create$ ?w3 ?w))))
?w3)
CLIPS> (munge "red green blue purple brown green white red black blue")
("gren" "blue" "purple" "brwn" "gren" "whte" "blck" "blue")
CLIPS>