在列表中匹配和分组彼此相关(相关)的相似词
Posted
技术标签:
【中文标题】在列表中匹配和分组彼此相关(相关)的相似词【英文标题】:Match and Group similar words that are related to each other (relevant) in a list 【发布时间】:2022-01-03 01:27:00 【问题描述】:这不仅是对相似性的单词进行分组,而且是对含义进行分组。假设我有以下列表:
func = ['Police Man','Police Officer','Police','Admin','Administrator','Dietitian','Food specialist','Administrative Assistant','Economist','Economy Consultant']
我想找到具有相似含义和功能的单词。我尝试了fuzzywuzzy,但它没有达到我想要的效果:
for i in func:
for n in func:
print(i,":",n)
print(fuzz.ratio(i, n))
这是 fuzzing 的一部分,它不能完成这项工作:
Dietitian : Dietitian
100
Dietitian : Food specialist
25
我认为我应该使用库 nltk 或词干提取?在列表中查找相关单词和功能的最佳方法是什么?
【问题讨论】:
【参考方案1】:我认为我应该使用 ... 词干提取?
您绝对不想使用词干提取。词干只会把词带到词根,所以 stem("running") = "run"。它不会根据含义做任何事情,所以 stem("sprinting") = "sprint" != "run"。 :(
我相信我应该使用 nltk ...
WordNet 将让您搜索称为“synsets”的同义词集,您可以通过 nltk 甚至通过 Web 界面访问它。不过,它不擅长复合词。 :( 主要是单字。
因此,您可以查找"officer" and "policeman" 并查看它们具有重叠的含义。当然,“官”还有其他含义;词必须有多接近才能符合您的搜索条件?例如。如果“食品专家”与“营养师”相同,那么“食品专家”也与“厨师”相同吗?
如果 WordNet 看起来确实是一个有用的工具,请查看他们的 Python API。你会想要类似的东西
common = [synset for synset in wn.synsets("officer") if synset in wn.synsets("policeman")
return len(common) > 0
【讨论】:
以上是关于在列表中匹配和分组彼此相关(相关)的相似词的主要内容,如果未能解决你的问题,请参考以下文章
R语言ggplot2可视化线图(line)自定义配置标题文本相关内容颜色和图例(legend)颜色相匹配(和分组线图的颜色相匹配match colors of groups)