如何检测句子中的单词是否指向颜色/body部位/车辆



正如标题所示,我想知道句子中的某个单词是否指向

A color
The 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
  • 中不存在的单词。

最新更新