我有一個WordNet同義詞偏移量(例如id="n#05576222"
)。鑑於此偏移量,我如何使用Python獲取同義詞集?如何獲得給定偏移ID的WordNet同義詞集?
11
A
回答
11
對於NTLK 3.2.3或更高版本,請參閱donners45的答案。
對於舊版本的NLTK的:
有一個在NLTK沒有內置的方法,但你可以這樣做:
from nltk.corpus import wordnet
syns = list(wordnet.all_synsets())
offsets_list = [(s.offset(), s) for s in syns]
offsets_dict = dict(offsets_list)
offsets_dict[14204095]
>>> Synset('heatstroke.n.01')
然後,您可以酸洗字典,並加載它時,你需要它。
對於NLTK之前的版本3.0,與
offsets_list = [(s.offset, s) for s in syns]
替換行
offsets_list = [(s.offset(), s) for s in syns]
因爲之前NLTK 3.0 offset
物的屬性,而不是方法。
1
除了使用NLTK,另一種選擇是使用普林斯頓WordNet中的.tab文件Open Multilingual WordNet
http://compling.hss.ntu.edu.sg/omw/。通常我用下面的配方來訪問共發現作爲一個字典,偏移爲重點和;
分隔字符串作爲一個價值觀:
# Gets first instance of matching key given a value and a dictionary.
def getKey(dic, value):
return [k for k,v.split(";") in dic.items() if v in value]
# Read Open Multi WN's .tab file
def readWNfile(wnfile, option="ss"):
reader = codecs.open(wnfile, "r", "utf8").readlines()
wn = {}
for l in reader:
if l[0] == "#": continue
if option=="ss":
k = l.split("\t")[0] #ss as key
v = l.split("\t")[2][:-1] #word
else:
v = l.split("\t")[0] #ss as value
k = l.split("\t")[2][:-1] #word as key
try:
temp = wn[k]
wn[k] = temp + ";" + v
except KeyError:
wn[k] = v
return wn
princetonWN = readWNfile('wn-data-eng.tab')
offset = "n#05576222"
offset = offset.split('#')[1]+'-'+ offset.split('#')[0]
print princetonWN.split(";")
print getKey('heatstroke')
12
由於NLTK 3.2.3中,有這樣做的一個公共方法:
wordnet.synset_from_pos_and_offset(pos, offset)
在早期版本中,你可以使用:
wordnet._synset_from_pos_and_offset(pos, offset)
這將返回基於它一個同義詞集的POS和offest ID。我認爲這種方法僅適用於NLTK 3.0,但我不確定。
例子:
from nltk.corpus import wordnet as wn
wn._synset_from_pos_and_offset('n',4543158)
>> Synset('wagon.n.01')
0
您可以使用of2ss()
,例如:
from nltk.corpus import wordnet as wn
syn = wn.of2ss('01580050a')
將返回 Synset('necessary.a.01')
相關問題
- 1. Wordnet同步偏移?如何比較單詞
- 2. 查找wordnet中單詞的同義詞
- 3. 如何在給定單詞的單詞袋詞彙中獲得單詞的id?
- 4. 使用wordnet獲取單詞的最佳同義詞
- 5. 如何使用Python NLTK在WordNet同義詞集中打印出單詞本身?
- 6. 從WordNet獲取名詞的大集合
- 7. 如何獲得NLP的同義詞
- 8. 如何獲取Wordnet中的Synset偏移以用於Imagenet
- 9. 如何獲得給定主類別id的產品集合?
- 10. 沒有得到使用WORDNET同義詞集的定義方法所需的輸出
- 11. 使用WordNet查找同義詞,定義和例句
- 12. 使用R Wordnet包獲取反義詞
- 13. 查詢從wordnet mysql獲取反義詞?
- 14. 如何獲得__TIME__的UTC偏移量?
- 15. 如何獲得kafka的最新偏移
- 16. 獲取指定詞的WordNet域名
- 17. 如何根據Wordnet的出現概率排序同義詞
- 18. 獲得給定時區的當前時間偏移量
- 19. 如何獲得普林斯頓WN感覺ID給出一個意義上的偏移量? Python的NLTK
- 20. 檢索使用wordnet的單詞的同義詞爲R
- 21. 未定義不同數量的偏移
- 22. 如何獲得時區偏移值
- 23. 如何獲得時區偏移爲±hh:mm?
- 24. 如何獲得內存偏移量?
- 25. 如何在logstash中獲得偏移量?
- 26. iPhone - 如何獲得時區偏移量?
- 27. 如何使用jquery獲得給定css偏移距最近的ul元素
- 28. 使用wordnet獲取單詞的詞條
- 29. 如何獲得MySQL中特定行的偏移量?
- 30. 如何獲得相對於特定父級的偏移量?
有趣的是,這將引發與NLTK 3.0 – duhaime
一個關鍵錯誤'offset'是現在是一種方法。試試這個: 'offsets_dict = {s.offset():s for w in.all_synsets()}' – Omer
*「NLTK中沒有內置方法」* - 現在有!查看donners45的答案;這個已經過時了。 –