所以我有一个描述特定群体的单词列表。例如,有一组是基于宠物的。
示例宠物组的单词如下所示:
[pets, pet, kitten, cat, cats, kitten, puppies, puppy, dog, dogs, dog walking, begging, catnip, lol, catshit, thug life, poop, lead, leads, bones, garden, mouse, bird, hamster, hamsters, rabbits, rabbit, german shepherd, moggie, mongrel, tomcat, lolcatz, bitch, icanhazcheeseburger, bichon frise, toy dog, poodle, terrier, russell, collie, lab, labrador, persian, siamese, rescue, Celia Hammond, RSPCA, battersea dogs home, rescue home, battersea cats home, animal rescue, vets, vet, supervet, Steve Irwin, pugs, collar, worming, fleas, ginger, maine coon, smelly cat, cat people, dog person, Calvin and Hobbes, Calvin & Hobbes, cat litter, catflap, cat flap, scratching post, chew toy, squeaky toy, pets at home, cruft's, crufts, corgi, best in show, animals, Manchester dogs' home, manchester dogs home, cocker spaniel, labradoodle, spaniel, sheepdog, Himalayan, chinchilla, tabby, bobcat, ragdoll, short hair, long hair, tabby cat, calico, tabbies, looking for a good home, neutring, missing, spayed, neutered, declawing, deworming, declawed, pet insurance, pet plan, guinea pig, guinea pigs, ferret, hedgehogs, minipigs, mastiff, leonburger, great dane, four-legged friend, walkies, goldfish, terrapin, whiskas, mr dog, sheba, 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's wordnet
,from nltk.corpus import wordnet as wn
。
然后,我们可以获得每个同义词集的引理。通过简单地添加这些引理,我反过来增加了相当多的噪音,无论如何,我也添加了一些有趣的单词。
但我想要看的是降噪,并感谢任何建议或替代方法以上。
其中一个想法是,我正在尝试查看单词“cat”是否出现在同义词集名称或定义中,以包括或排除这些词条。
发布于 2015-06-19 13:35:15
我建议在这里将语义相似度与kNN的变体一起使用:对于每个候选词,计算与所有金本位词的成对语义相似度,然后仅保留k(尝试不同的k,从5到100)最相似的金本位词,计算与这k个词的相似度的平均值(或总和),然后使用此值来丢弃噪声候选-通过仅排序和保持n最佳,或通过实验定义的阈值截断。
语义相似度可以基于WordNet计算,参见related question,或者基于word2vec或类似技术学习的向量模型,再次参见related question。
实际上,你可以尝试将这项技术与所有单词作为候选单词,或者所有/部分单词出现在特定领域的文本中-在最后一种情况下,任务称为自动术语识别,方法可以直接用于您的问题或作为候选单词的来源;在谷歌学者上搜索它们;作为现有方法的简短描述和调查链接的示例,请参阅this paper:
Fedorenko,D.,Astrakhantsev,N.,& Turdakov,D. (2013)。领域特定术语的自动识别:一项实验评估。在SYRCoDIS (第15-23页)。
https://stackoverflow.com/questions/30888536
复制