使用几种内置的相似性度量可以轻松地计算WordNet中两个同义词集之间的语义相似性,例如:
synset1.path_similarity(synset2)
Run Code Online (Sandbox Code Playgroud)
synset1.lch_similarity(synset2)
,Leacock-Chodorow相似度
synset1.wup_similarity(synset2)
,吴帕尔默相似
然而,所有这些都利用了WordNet的分类关系,这些关系是名词和动词的关系.形容词和副词通过同义词,反义词和属性相关联.如何衡量两个形容词之间的距离(跳数)?
我尝试过path_similarity()
,但正如预期的那样,它会返回'None'
:
from nltk.corpus import wordnet as wn
x = wn.synset('good.a.01')
y = wn.synset('bad.a.01')
print(wn.path_similarity(x,y))
Run Code Online (Sandbox Code Playgroud)
如果有任何方法来计算一个形容词与另一个形容词之间的距离,那么指出它将会非常感激.
我有以下字符串:
input = "I love programming with Python-3.3! Do you? It's great... I give it a 10/10. It's free-to-use, no $$$ involved!"
Run Code Online (Sandbox Code Playgroud)
所有标点符号都应与"/","'"," - ","+"和"$"之类的单词"EXCEPT"分开.
所以输出应该是:
"I love programming with Python-3 . 3 ! Do you ? It's great . . . I give it a 10/10. It's free-to-use , no $$$ involved !"
Run Code Online (Sandbox Code Playgroud)
我使用了以下代码:
for x in string.punctuation:
if x == "/":
continue
if x == "'":
continue
if x == "-":
continue
if x == "+":
continue
if …
Run Code Online (Sandbox Code Playgroud) WordNet中的感知偏移是一个8位数字,后跟一个POS标记.例如,synset'dog.n.01'的偏移量为'02084071-n'.我试过以下代码:
from nltk.corpus import wordnet as wn
ss = wn.synset('dog.n.01')
offset = str(ss.offset)
print (offset)
Run Code Online (Sandbox Code Playgroud)
但是,我得到了这个输出:
<bound method Synset.offset of Synset('dog.n.01')>
Run Code Online (Sandbox Code Playgroud)
如何以这种格式获得实际偏移量:'02084071 -n'?
我有大量的 WordNet 同义词集。这个集合的一小部分是:
syns = {"Synset('brutal.s.04')", "Synset('benignant.s.02')"}
Run Code Online (Sandbox Code Playgroud)
我想为集合中的每个同义词打印出同义词集术语(同义词集的主要引理)。例如,上述集合的输出应该是:
brutal, benignant
Run Code Online (Sandbox Code Playgroud)
这是我使用的代码:
from nltk.corpus import wordnet as wn
for s in syns:
print(wn.s.lemmas[0])
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为 s 被视为字符串,而不是对象。我收到以下错误:
AttributeError: 'WordNetCorpusReader' object has no attribute 's'
Run Code Online (Sandbox Code Playgroud)
这是因为 s 被视为一个字符串,而不是一个对象。我尝试将 s 更改为字节形式,如下所示:
s = bytes(s)
Run Code Online (Sandbox Code Playgroud)
但这不起作用。如何以最简单的方式仅打印出上述引理?
我检查了here,这是一个很好的方法,但是我的一组同义词集是字符串形式的,而不是实际的对象。
提前致谢..