Python 从单词列表中提取更多相似单词

Python 从单词列表中提取更多相似单词,python,nlp,Python,Nlp,所以我有一个描述特定群体的单词列表。例如,一个小组以宠物为基础 示例组pets的单词如下所示: [宠物,宠物,小猫,猫,猫,小猫,小狗,小狗,狗,狗,遛狗,乞讨,猫咬,大笑,猫屎,暴徒生活,便便,铅,铅,铅,骨头,花园,老鼠,鸟,仓鼠,仓鼠,兔,兔,德国牧羊犬,莫吉,杂种,雄猫,洛卡茨,母狗,奶酪汉堡,比熊薯条,玩具狗,贵宾犬,猎犬,拉塞尔,牧羊犬阿多、波斯、暹罗、救援、西莉亚·哈蒙德、皇家防止虐待动物协会、巴特西狗之家、救援之家、巴特西猫之家、动物救援、兽医、兽医、超级兽医、史蒂夫·欧文、哈巴

所以我有一个描述特定群体的单词列表。例如,一个小组以宠物为基础

示例组pets的单词如下所示:

[宠物,宠物,小猫,猫,猫,小猫,小狗,小狗,狗,狗,遛狗,乞讨,猫咬,大笑,猫屎,暴徒生活,便便,铅,铅,铅,骨头,花园,老鼠,鸟,仓鼠,仓鼠,兔,兔,德国牧羊犬,莫吉,杂种,雄猫,洛卡茨,母狗,奶酪汉堡,比熊薯条,玩具狗,贵宾犬,猎犬,拉塞尔,牧羊犬阿多、波斯、暹罗、救援、西莉亚·哈蒙德、皇家防止虐待动物协会、巴特西狗之家、救援之家、巴特西猫之家、动物救援、兽医、兽医、超级兽医、史蒂夫·欧文、哈巴狗、项圈、蠕虫、跳蚤、姜、缅因州浣熊、臭猫、猫人、狗人、卡尔文和霍布斯、卡尔文和霍布斯、猫窝、猫瓣、猫瓣、抓杆、咀嚼玩具、吱吱吱吱声玩具,宠物在家,克鲁夫特,克鲁夫特,科吉,最佳表演,动物,曼彻斯特狗之家,曼彻斯特狗之家,可卡犬,拉布拉多犬,猎犬,牧羊犬,喜马拉雅山犬,栗鼠,斑猫,山猫,碎布娃娃,短发,长毛,斑猫,印花布,斑猫,寻找一个好家,中和,失踪,绝育,去皮,驱虫,去皮,pet保险、宠物计划、豚鼠、豚鼠、雪貂、刺猬、迷你猪、獒、利昂伯格、大丹狗、四足朋友、步行机、金鱼、水獭、惠斯卡、狗先生、舍巴、iams]

现在我计划使用NLTK丰富这个列表

首先,我可以得到每个单词的语法集。如果我们以
cats
为例,我们可以得到:

Synset('cat.n.01')
Synset('guy.n.01')
Synset('cat.n.03')
Synset('kat.n.01')
Synset('cat-o'-nine-tails.n.01')
Synset('caterpillar.n.02')
Synset('big_cat.n.01')
Synset('computerized_tomography.n.01')
Synset('cat.v.01')
Synset('vomit.v.01')
为此,我们使用
nltk的wordnet
从nltk.corpus导入wordnet作为wn

然后我们可以得到每个语法集的引理。通过简单地添加这些引理,我会添加相当多的噪声,但是我也添加了一些有趣的单词

但我想看的是降噪,如果您有任何建议或替代方法,我将不胜感激


其中一个想法是,我试图看看“cats”一词是否出现在语法集名称或定义中,以包括或排除这些引理。

我建议在这里使用语义相似性的kNN变体:对于每个候选词,计算所有金本位词的成对语义相似性,然后只保留k(尝试不同的k从5到100)对于最相似的金标准单词,计算与这些k个单词相似性的平均值(或总和),然后使用该值来丢弃噪声候选词-通过排序并仅保留n个最佳值,或通过实验定义的阈值进行截断

语义相似性可以基于WordNet计算,请参见,或者基于word2vec或类似技术学习的向量模型,请参见

事实上,你可以尝试将所有单词作为候选词,或者将所有/部分单词出现在特定领域的文本中——在最后一种情况下,该任务称为自动术语识别,方法可以直接用于你的问题,也可以作为候选词的来源;在Google scholar上搜索它们;例如,对现有的调查方法和链接见:

费多伦科,D.,阿斯特拉坎采夫,N.,图尔达科夫,D.(2013)。自动 领域特定术语的识别:一项实验性评估 SYRCoDIS(第15-23页)