因为标题表明我想知道句子中的某个单词是否指向
1]颜色
The grass is green.
因此“绿色”是颜色
2]身体部位
Her hands are soft
因此“手”是身体的一部分
3]车辆
I am driving my car on the causeway
因此“汽车”是一种载体
在类似的问题中,解析器是可能的有效解决方案之一。 例如斯坦福解析器被提出了类似的问题
How to find if a word in a sentence is pointing to a city
现在的问题是stanford解析器可用于检测:
LOCATION
ORGANIZATION
DATE
MONEY
PERSON
PERCENT
TIME
但是,如果您想尝试检测其他内容,可以选择word-net作为类似问题中提到的选项
How do I list out all English terms in a sentence that indicate an animal?
其中一个答案建议使用wordnet并利用下位词/上位词关系。答案还提到了wordnet的名词.animal文件。
下面的链接显示了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.
那么这是一种有效的方法吗?
我怎样才能使用(hyponym / hypernym)是wordnet?
注意:我打算使用:JWI(MIT Java Wordnet界面)
答案 0 :(得分:1)
参考 hyponymy / hypernymy 方法,这将涉及探索wordnet树及其词之间的关系。
一个单词的下位词( Synset ,更准确)代表了更具特色的概念,而上位词代表概念本质上更为通用。与Wordnet的树状结构类比,您可以将下位词视为您正在查看的单词( node )的 children ,上位词为这个词的父母。
作为一个例子,采用上下文 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())
所有这些共享相同的hypernym列表:
[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')]
可以应用相同的技术来探索与身体部位或车辆相关的选项。
另外,对于 reddish 这样的衍生词,我知道有两种绕过它们缺席的方法: