我的目标是创建一个系统,能够接受任何随机文本,提取句子,删除标点,然后,在裸句(其中一个),随机替换NN或VB标记的单词与他们的meronym ,全名或同义词,以及来自WordNet同义词的类似单词。未来还有很多工作要做,但我一开始就遇到了问题。
为此我使用了pattern和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
变量中提取ie下位词时,它被证明是不可能的,因为它是Synset
个对象,我无法做到无论如何操纵它。
知道如何提取下位词列表中报告的单词(即print(djidja[2])
显示Synset(u'bowler')
...那么如何从中提取'bowler'
?/ p>
答案 0 :(得分:2)
回想一下,synset只是标记为同义词的单词列表。给定日落,您可以提取形成它的单词:
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']
您还可以提取hypernims和hyponyms:
print(s.hypernyms())
Out[16]: [Synset(u'canine'), Synset(u'domestic animal')]
print(s.hypernyms()[0].synonyms)
Out[17]: [u'canine', u'canid']