2011-10-10 97 views
2

我建立这个应用程序的Mac OS X v10.6中简单的自然语言解析器在Objective-C

我建立一个基于文本的冒险,我创建了一个非常简单的自然语言解析器,可以处理用户输入的命令。到目前为止,它很好,可以解析句子,如:“拿剑”或“在框中查找”

我想要做的是创建一个不同的单词的别名列表,使打字命令不那么严格。因此,例如“采取”可以有一个别名的“抢”或“去”可以有别名“移动,走路或旅行”

我试过创建一个NSDictionary,其中的关键是单词和值是一个NSArray的别名。问题是,当确定输入的命令是否与可用的命令匹配时,我将不得不使用用于该密钥的单词来引用别名。

我想能够使用任何别名来引用任何其他别名。有谁知道这样做的好方法吗?

我有另一种想法(但它似乎效率低下)是将每组别名存储在一个数组中。解析时,我会找到包含我想匹配的单词的数组,并尝试将该数组中的所有其他单词与它匹配。

回答

2

概念,我想你可能会发现它生产的治疗在同一基础上的所有单词。让你的词典从你的词汇中取出任何词作为关键词,并且数值编码解释或指导解释的信息。

+0

我不完全理解你的意思:“并且数值上编码解释或指导解释的信息在上下文中。” –

+2

该值可能是一些枚举值。一个例子是,单词take,grab和get可能最初被锁定到一个OBTAIN值,但是你可以修改get的值,因此它既可以用作take(获得剑)的同义词,也可以用作move(get到门)。 –

+0

这是一个好主意!我会试着设置它。谢谢。 –

6

检查NSLinguisticTagger类(在iOS 5中新)

+0

谢谢你的提示(我一定会检查出来),但我忘了提,我建立这个适用于Mac OS X v10.6中 –