删除 python 中 TFIDF 结果的同义词

Remove synonyms of TFIDF results in python

我目前正在进行一个项目,该项目使用 python 中的 tfidf 获取文档集中前 10 个最相关的词。但是,有些结果会得到相同的词及其复数或副词等。为了解决这个问题,我决定使用词干提取,但这会导致一个问题,即单词和它们的反义词可以具有相同的词根,或者通过将单词缩减为其词根无法返回并在文档中找到该特定单词如果用户要搜索它。在这种情况下,是否有比 nlp 更好的 nlp?任何提示或 link 都会有用。我正在做一些与 youtube 非常相似的东西。

首先你要在 StemsLemmas 之间做出选择(Roots,请注意)。 Google 差异更多。

你提到了反义词,但大多数是由前缀决定的(例如重要与(不)重要)。因此,Stemmer 应该保留大多数反义词不变。

至于同义词,假设您只考虑具有完全相同词干的单词,因为如果您想将同义词与完全不相关的词根联系起来,您会考虑语义和 wordnet 但这可能会使您的问题变得超出合理范围...

根据你的问题,你已经有一个 Stemmer 在 Python 中工作...最简单的解决方案是使用两个词典:一个词典映射 stems/lemmas 到 set/list inflected/derived 完整的单词(and/or 它们的频率)。第二个字典将这些完整的单词映射到它们在您正在索引的文档中的不同位置。

这样你就可以对用户输入的词进行词干分析,在 top-k tf-idf/stem 字典中查找它,然后用第二个字典将完整的词映射到它在文档集中的出现。

(鉴于您的问题,很难进一步阐述。)