理想情况下在python中使用正则表达式。我正在制作一个简单的聊天机器人,它目前在回答“我爱你”这样的短语时遇到了问题(它会从语法处理程序中退回“你爱我”,当它应该回馈时“你爱我“)。
另外,如果你能想出好的语言来投入这个语法处理程序,我会喜欢它,这很棒。我喜欢一些测试数据。
如果那里有一个很好的及物动词列表(类似于“前100个使用过的”),那么使用那个和特殊情况下的“及物动词+你”模式是可以接受的。
答案 0 :(得分:3)
那么,你想要实现的目标肯定是非常具有挑战性的,但也非常困难。
首先,我会先看一下语法规则。
基本句子结构:
(当然,我们也可以谈论“主题+动词+间接对象+直接对象”等格式(例如我给你的球),但现在这会变得太复杂了......)< / em>的
显然,这个方案非常简单,但我们暂时坚持下去。
然后(另一种过于简单化的假设), 每个部分都是一个单词 。
所以基本上你有以下句子方案:
WORD WORD WORD
通常可以使用正则表达式进行匹配,例如:
([\w]+)\s+([\w]+)\s+([\w]+)?
说明:
([\w]+) # first word (=subject)
\s+ # one or more spaces
([\w]+) # second word (=verb)
\s+ # one or more spaces
([\w]+)? # (optional) third word (=object - if the verb is transitive)
现在,显然要制定像“你爱我”而不是“你爱我”这样的句子,你的算法也应该“理解”:
- 我 - 我 - 我
- 你 - 你 - 你
- 他 - 他 - 他
- 等...
只是一些想法......(完全出于我对语言学的热情: - ))
至于你感兴趣的单词列表,只有几个样本:
答案 1 :(得分:1)