小编mod*_*ish的帖子

如何使用Python NLTK计算WordNet中两个形容词之间的最短路径(测地)距离?

使用几种内置的相似性度量可以轻松地计算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)

如果有任何方法来计算一个形容词与另一个形容词之间的距离,那么指出它将会非常感激.

python nlp nltk wordnet cosine-similarity

5
推荐指数
1
解决办法
2197
查看次数

Python - 如何通过空格分隔标点符号,在标点符号和单词之间只留下一个空格?

我有以下字符串:

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)

python regex

2
推荐指数
1
解决办法
3267
查看次数

如何提取WordNet synset的偏移量,在Python NLTK中提供一个synset?

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'?

python nlp nltk wordnet semantics

2
推荐指数
1
解决办法
2032
查看次数

如何打印出 Wo​​rdNet 同义词集的主要引理?蟒蛇NLTK

我有大量的 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,这是一个很好的方法,但是我的一组同义词集是字符串形式的,而不是实际的对象。

提前致谢..

python nltk wordnet

2
推荐指数
1
解决办法
2553
查看次数

标签 统计

python ×4

nltk ×3

wordnet ×3

nlp ×2

cosine-similarity ×1

regex ×1

semantics ×1