正如标题所示,我想知道句子中的某个单词是否指向
A colorThe grass is green.
因此"green"是color
2]身体部位
Her hands are soft
因此"手"是身体的一部分
3]车辆
I am driving my car on the causeway
因此"car"是一辆车
在类似的问题中,解析器是可能的有效解决方案之一。例如,斯坦福解析器被建议用于类似的问题
如何判断句子中的单词是否指向城市
现在的问题是斯坦福解析器可以用来检测:
LOCATION
ORGANIZATION
DATE
MONEY
PERSON
PERCENT
TIME
然而,如果你想尝试检测其他东西,word-net可能是一个选项,正如在一个类似的问题中提到的
我如何在一个句子中列出所有表示动物的英语术语?
其中一个答案建议使用wordnet并利用上下词关系。答案中也提到了这个名词。wordnet动物文件。
下面的链接显示了wordnet中所有其他文件的列表https://wordnet.princeton.edu/man/lexnames.5WN.html
我的方法是我可以利用
1)
(noun.body FOR body parts)
2)
(noun.artifact FOR vehicles)
3)
The (hyponym/hypernym) relationship can be used to detect if word is pointing to a color or not.
那么这是一个有效的方法吗?
如何使用(上下名/上名)是wordnet ?
注意:我计划使用:JWI (MIT Java Wordnet接口)
参考下位/上位方法,这将涉及探索wordnet树及其单词之间的关系。
一个词(更准确地说是Synset的词)的下义词表示本质上更特殊的概念,而上义词表示本质上更一般的概念。与Wordnet的树状结构类似,您可以将下位词视为正在查看的单词(节点)的子,而上位词则是该单词的父。
以dog这个词的上下词为例:dog = wn.synsets('dog')[0]
print(dog.hypernyms())
print(dog.hyponyms())
产生以下结果:
[Synset('canine.n.02'), Synset('domestic_animal.n.01')]
[Synset('basenji.n.01'), Synset('corgi.n.01'), Synset('cur.n.01'),
Synset('dalmatian.n.02'), Synset('great_pyrenees.n.01'), S
Synset('griffon.n.02'), Synset('hunting_dog.n.01'), Synset('lapdog.n.01'),
Synset('leonberg.n.01'), Synset('mexican_hairless.n.01'),
Synset('newfoundland.n.01'), Synset('pooch.n.01'), Synset('poodle.n.01'),
Synset('pug.n.01'), Synset('puppy.n.01'), Synset('spitz.n.01'),
Synset('toy_dog.n.01'), Synset('working_dog.n.01')]
以类似的方式,如果我们想知道哪些单词代表颜色,我们可以探索代表颜色的不同单词的首字母缩略词,希望它们有一个共同的祖先(首字母缩略词)。在这个意义上,我做了以下实验:
print(wn.synsets('green')[0].hypernyms())
print(wn.synsets('blue')[0].hypernyms())
print(wn.synsets('red')[0].hypernyms())
print(wn.synsets('yellow')[0].hypernyms())
它们共享相同的中义词列表:
[Synset('chromatic_color.n.01')]
也print(wn.synsets('black')[0].hypernyms())
print(wn.synsets('gray')[0].hypernyms())
生成结果
[Synset('achromatic_color.n.01')]
接下来我们要做的是打印这些结果的同义词集的所有下位词:
print(wn.synset('chromatic_color.n.01').hyponyms())
print(wn.synset('chromatic_color.n.01').hyponyms())
给出结果
[Synset('blond.n.02'), Synset('blue.n.01'), Synset('brown.n.01'),
Synset('complementary_color.n.01'), Synset('green.n.01'),
Synset('olive.n.05'), Synset('orange.n.02'), Synset('pastel.n.01'),
Synset('pink.n.01'), Synset('purple.n.01'), Synset('red.n.01'),
Synset('salmon.n.04'), Synset('yellow.n.01')]
[Synset('black.n.01'), Synset('gray.n.01'), Synset('white.n.02')]
同样的技术可以应用于探索与身体部位或车辆相关的选项。
此外,对于衍生词,如和,我知道有两种方法可以绕过它们的缺失:- 词干化标记化文本,通过Porter Stemmer(见此链接)
- 使用Morphy获得基本形式,让您在Wordnet中查找生成的单词(有关Morphy的详细信息,请参阅此链接)。我推荐这种方法,因为词干提取可能会产生Wordnet 中不存在的单词。