2024-10-02 16:23:27 发布
网友
我从SemCor+OMSTI得到了一组感知键,比如“long%3:00:02::”。我怎样才能得到手套?有地图文件吗?或者使用Nltk WordNet?在
我通过下载这个解决了这个问题。 http://wordnet.princeton.edu/glosstag.shtml 使用WordNet-3.0\glosstag\merged中的文件创建我自己的地图dic。在
import re from nltk.corpus import wordnet as wn sense_key_regex = r"(.*)\%(.*):(.*):(.*):(.*):(.*)" synset_types = {1:'n', 2:'v', 3:'a', 4:'r', 5:'s'} def synset_from_sense_key(sense_key): lemma, ss_type, lex_num, lex_id, head_word, head_id = re.match(sense_key_regex, sense_key).groups() ss_idx = '.'.join([lemma, synset_types[int(ss_type)], lex_id]) return wn.synset(ss_idx) x = "long%3:00:02::" synset_from_sense_key(x)
NLTK中有一个非常迟钝的函数。但是,它不是从检测键读取的,而是从data_file_map读取的(例如”数据调整", "数据.名词“,等等):https://github.com/nltk/nltk/blob/develop/nltk/corpus/reader/wordnet.py#L1355
data_file_map
因为在NTLK中我们已经有了一个完全可以理解的API,还有来自https://wordnet.princeton.edu/wordnet/man/senseidx.5WN.html的一些指南
我们可以使用正则表达式https://regex101.com/r/9KlVK7/1/:
>>> import re >>> sense_key_regex = r"(.*)\%(.*):(.*):(.*):(.*):(.*)" >>> x = "long%3:00:02::" >>> re.match(sense_key_regex, x) <_sre.SRE_Match object at 0x10061ad78> >>> re.match(sense_key_regex, x).groups() ('long', '3', '00', '02', '', '') >>> lemma, ss_type, lex_num, lex_id, head_word, head_id = re.match(sense_key_regex, x).groups() >>> synset_types = {1:'n', 2:'v', 3:'a', 4:'r', 5:'s'} >>> '.'.join([lemma, synset_types[int(ss_type)], lex_id]) 'long.a.02'
你可以从sense key=得到NLTKSynset()对象)
Synset()
>>> from nltk.corpus import wordnet as wn >>> wn.synset(idx) Synset('long.a.02')
我通过下载这个解决了这个问题。 http://wordnet.princeton.edu/glosstag.shtml 使用WordNet-3.0\glosstag\merged中的文件创建我自己的地图dic。在
TL;DR
很长时间内
NLTK中有一个非常迟钝的函数。但是,它不是从检测键读取的,而是从
data_file_map
读取的(例如”数据调整", "数据.名词“,等等):https://github.com/nltk/nltk/blob/develop/nltk/corpus/reader/wordnet.py#L1355因为在NTLK中我们已经有了一个完全可以理解的API,还有来自https://wordnet.princeton.edu/wordnet/man/senseidx.5WN.html的一些指南
^{pr2}$我们可以使用正则表达式https://regex101.com/r/9KlVK7/1/:
你可以从sense key=得到NLTK
Synset()
对象)相关问题 更多 >
编程相关推荐