我将输入句子分类为不同的类别。例如时间,距离,速度,位置等

我使用MultinomialNB.训练了分类器

分类器主要考虑tf作为特征,我也尝试过考虑句子结构(使用1-4克)

multinomialNB = 0.001的情况下使用alpha这是少数查询的结果

what is the value of Watch
{"1": {"other": "33.27%"}, "2": {"identity": "25.40%"}, "3": {"desc": "16.20%"}, "4": {"country": "9.32%"}}
what is the price of Watch
{"1": {"other": "25.37%"}, "2": {"money": "23.79%"}, "3": {"identity": "19.37%"}, "4": {"desc": "12.35%"}, "5": {"country": "7.11%"}}
what is the cost of Watch
{"1": {"money": "48.34%"}, "2": {"other": "17.20%"}, "3": {"identity": "13.13%"}, "4": {"desc": "8.37%"}} #for above two query also result should be money
How early can I go to mumbai
{"1": {"manner": "97.77%"}}  #result should be time
How fast can I go to mumbai
{"1": {"speed": "97.41%"}}
How come can I go to mumbai
{"1": {"manner": "100.00%"}}
How long is a meter
{"1": {"period": "90.74%"}, "2": {"dist": "9.26%"}}  #better result should be distance


在考虑multinomialNW的情况下使用ngram(1-4)

what is the value of Watch
{"1": {"other": "33.27%"}, "2": {"identity": "25.40%"}, "3": {"desc": "16.20%"}, "4": {"country": "9.32%"}}
what is the price of Watch
{"1": {"other": "25.37%"}, "2": {"money": "23.79%"}, "3": {"identity": "19.37%"}, "4": {"desc": "12.35%"}, "5": {"country": "7.11%"}}
what is the cost of Watch
{"1": {"money": "48.34%"}, "2": {"other": "17.20%"}, "3": {"identity": "13.13%"}, "4": {"desc": "8.37%"}}   # for above two query also result should be money
How early can I go to mumbai
{"1": {"manner": "97.77%"}}  #result should be time
How fast can I go to mumbai
{"1": {"speed": "97.41%"}}
How come can I go to mumbai
{"1": {"manner": "100.00%"}}
How long is an hour
{"1": {"dist": "99.61%"}}   #result should be time


因此结果完全取决于单词的出现。是否有任何方法可以在这里添加单词歧义消除(或可以带来某种理解的其他任何方式)?

我已经检查了Word sense disambiguation in NLTK Python

但是这里的问题是识别句子中的主要词,每个词都不同。

POS(给出不依赖句子的NN,JJ),NER(高度依赖大写字母,有时ner也不能消除上面句子中的“ early”,“ cost”之类的歧义)我已经尝试过,没有他们帮助。

**How long some times cosidered as time or distance. So based on sentence near by words, it should able to able understand what it is. Similarly for "how fast, "how come" "how early" [how + word] should be understable**


我正在使用nltk,scikit学习,python

更新:


40个班级(每个班级都有该班级的句子)
总计数据300 Kb


准确性取决于查询。有时非常好> 90%。有时会导致无关紧要的课程。取决于查询与数据集的匹配方式

最佳答案

仅通过从上下文中查看单个单词来尝试推论语义不会使您走得太远。在您的“监视”示例中,唯一真正表明您具有“金钱”语义的术语就是您希望消除歧义的术语。作为人类的读者,句子中还有哪些其他信息可帮助您得出结论?您将如何建模这些知识? (传统的答案可能会导致您将手表视为有价值的物品或类似的东西。)

话虽如此,您可能希望将Wordnet同义词集视为一种可能有用的抽象。至少您可以说“成本”,“价格”和“价值”以某种方式相关,但是我想您已经计算出的字级统计数据表明它们不是完全同义的,您看到的变化基本上就是针对这一事实(尽管您的输入大小听起来很小,足以充分涵盖各个单词形式的用法模式的差异)。

语音注释的一部分可以提供另一个提示。如果您知道“值”是一个名词,那么(至少在我看来,)将含义的范围缩小为“货币对话”,而动词阅读的含义则不太像金钱(“我们重视您的输入”,等等)。在您的其他示例中,很难看到它是否有帮助。也许您可以对带有POS注释的输入进行快速实验,看看它是否有帮助。 (但是,由于您现在遇到问题的原因大致相同,因此POS不一定总能正确推断。)

您作为示例显示的句子非常简单。为一小部分英语编写一个受限的解析器不是很难,在这里您实际上可以开始尝试从语法上理解输入,如果您知道您的输入通常会被约束为没有模态辅助的简单问题等等

(顺便说一句,如果它完全符合语法规定,我不确定“我怎么能去孟买”是“方式”。严格来说,您应该在这里使用从句从句的顺序。我会理解它的大致含义是“为什么我可以去孟买吗?”)

10-08 03:11