我目前正在从事一个项目,该项目使用python中的tfidf获取文档集中最相关的10个单词。但是,在相同的单词及其复数或副词左右的情况下,会有结果。为了解决这个问题,我决定使用词干,但这会导致一个问题,即单词及其反义词可以具有相同的词根,或者通过将单词缩为其词根而无法返回并在文档中找到该特定单词如果用户要搜索它。在这种情况下,是否存在比nlp更好的nlp?任何提示或链接将很有用。我从事与youtube非常相似的工作。
最佳答案
首先,您要在茎和引物之间做出选择(请注意,根都不是根)。 Google的区别在于更多。
您提到了反义词,但大多数反义词都是由前缀决定的(例如,重要与(不重要)对比)。因此,词干应该保留大多数反义词不变。
对于同义词,假设您只考虑词干完全相同的词,因为如果您想将同义词与完全不相关的词根相关联,则可能会考虑语义和类似词网的问题,但这可能会使您的问题更加复杂合理...
从您的问题出发,您已经有一个使用Python的Stemmer ...最简单的解决方案是使用两个字典:一个字典将词干/词元映射到变形/派生的完整词的集合/列表(和/或其频率)。还有第二本词典,将这些完整的单词映射到您要建立索引的文档中各个位置。
这样,您可以阻止用户输入的单词,在前k个tf-idf
/词干词典中进行检查,然后将带有第二个词典的完整单词映射到文档集中出现的单词。
(鉴于您的问题,很难进一步阐述。)