File 将WordNet文件转换为.txt

File 将WordNet文件转换为.txt,file,text,nlp,wordnet,File,Text,Nlp,Wordnet,我需要将数据库文件(noun.shape、noun.state、verb.conception ecc)从其自定义扩展名转换为.txt,以便更轻松地提取其自定义类别中的名词、动词、形容词和副词。 换句话说,在“仅数据库文件”中,您将找到我要查找的文件,不幸的是,它们的扩展名为.STATE或.SHAPE。它们在记事本中是可读的,但我需要一个包含这些文件中所有项目的列表,但括号中没有它们的定义。如果您只是将WordNet用作词典,您可以尝试打开多语言WordNet,请参阅 同时,请稍等片刻,因为NL

我需要将数据库文件(noun.shape、noun.state、verb.conception ecc)从其自定义扩展名转换为.txt,以便更轻松地提取其自定义类别中的名词、动词、形容词和副词。
换句话说,在“仅数据库文件”中,您将找到我要查找的文件,不幸的是,它们的扩展名为.STATE或.SHAPE。它们在记事本中是可读的,但我需要一个包含这些文件中所有项目的列表,但括号中没有它们的定义。

如果您只是将WordNet用作词典,您可以尝试
打开多语言WordNet
,请参阅


同时,请稍等片刻,因为NLTK开发人员很快就会将开放的多语言Wordnet API整合在一起,请参阅第1048行的内容
import os, codecs

from nltk.corpus import wordnet as wn

# 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

if not os.path.exists('msa/wn-data-zsm.tab'):
    os.system('wget http://compling.hss.ntu.edu.sg/omw/wns/zsm.zip')
    os.system('unzip zsm.zip')

msa_wn = readWNfile('msa/wn-data-zsm.tab')
eng_wn_keys = {(str(i.offset).zfill(8) + '-'+i.pos).decode('utf8'):i for i in wn.all_synsets()}

for i in set(eng_wn_keys).intersection(msa_wn.keys()):
    print eng_wn_keys[i], msa_wn[i]