我的目标是创建一个系统,能够获取任何随机文本、提取句子、删除标点符号,然后在裸句子(其中之一)上随机替换 NN 或 VB 标记单词及其 meronym、holonym 或synonim 以及 WordNet 同义词集中的相似单词。前面还有很多工作要做,但我一开始就遇到了问题。

为此,我使用模式和 TextBlob 包。这就是我到目前为止所做的......

from pattern.web import URL, plaintext
from pattern.text import tokenize
from pattern.text.en import wordnet
from textblob import TextBlob
import string

s = URL('http://www.fangraphs.com/blogs/the-fringe-five-baseballs-most-compelling-fringe-prospects-35/#more-157570').download()
s = plaintext(s, keep=[])
secam = (tokenize(s, punctuation=""))
simica = secam[15].strip(string.punctuation)
simica = simica.replace(",", "")

simica = TextBlob(simica)
simicaTg = simica.words

synsimica = wordnet.synsets(simicaTg[3])[0]
djidja = synsimica.hyponyms()

现在一切都按照我想要的方式工作,但是当我尝试提取即时下位词由此而来 djidja 事实证明这是不可能的,因为它是一个 Synset 对象,无论如何我都无法操纵它。

知道如何提取下义词列表中报告的单词(即 print(djidja[2]) 显示 Synset(u'bowler')...那么如何仅提取 'bowler' 由此)?

有帮助吗?

解决方案

回想一下,同义词集只是标记为同义词的单词列表。给定一个日落,你可以提取组成它的单词:

from pattern.text.en import wordnet
s = wordnet.synsets('dog')[0] # a word can belong to many synsets, let's just use one for the sake of argument
print(s.synonyms)

这输出:

Out[14]: [u'dog', u'domestic dog', u'Canis familiaris']

您还可以提取上位词和下位词:

print(s.hypernyms())
Out[16]: [Synset(u'canine'), Synset(u'domestic animal')]
print(s.hypernyms()[0].synonyms)
Out[17]: [u'canine', u'canid']
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top