python - 删除 python 中 TFIDF 结果的同义词

标签 python nlp tf-idf cosine-similarity

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

最佳答案

首先,您需要在引理之间做出选择(请注意,都不是)。谷歌搜索差异以获取更多信息。

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

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

从你的问题来看,你已经有了一个在 Python 中工作的 Stemmer...最简单的解决方案是使用两个字典:一个字典将词干/引理映射到变形/派生完整单词的集合/列表(和/或它们的频率) )。第二个字典将这些完整的单词映射到您正在索引的文档中的各个位置。

这样你就可以提取用户输入的单词,并在 top-k tf-idf 中检查它。/stem 字典,然后将第二个字典的完整单词映射到其在文档集中的出现位置。

(鉴于您的问题,很难进一步详细说明。)

关于python - 删除 python 中 TFIDF 结果的同义词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59505444/

相关文章:

nlp - 为什么特殊字符像 () "": [] are often removed from data before training translation machine?

machine-learning - 情感分析/分类任务中二进制与 tfidf Ngram 特征的比较?

python - Moviepy 制作两个 concatenate_videoclip 的 CompositeVideoClip

python - 无法覆盖 save_model django admin?

python - Python中C类型整数的最大值和最小值

python-3.x - 从 SpaCy 中删除跨度中的单词?

python - 如何对 pandas Dataframe 的一列中的所有值进行集合并集?

python - 如何更新 nltk 包以便它不会将电子邮件分成 3 个不同的标记?

java - 计算 solr 和 java 文档中单词的 TF-IDF

java - 计算 Lucene 文档之间的相似度和质心