我正在使用标记有依赖性的语料库。语料库的每个单词都是一个元组,包含5个元素:单词在句子中的位置,实际单词,POS,它所依赖的单词的索引以及功能。从这个语料库,我想根据一些规则将这些标记和关系转换为另一个。要编写这些规则,我首先要使语料库为双字。
我正尝试使用nltk ngrams函数,如下面的代码所示。但是,当我使用元组时,它不起作用,我得到的是整个语料库,显然没有二元组。
我正尝试使用nltk ngrams函数,如下面的代码所示。但是,当我使用元组时,它不起作用,我得到的是整个语料库,显然没有二元组。
import nltk, glob
from nltk import ngrams
def txt2corpus(path):
"""same as read_files function in corpus_opening_slicing"""
corpus = []
for f in glob.glob(path):
sents1=open(f).read().split('\n\n')
sents2 = []
for n in range(len(sents1)):
sents2.append(sents1[n].split('\n'))
sents3 = []
for s in sents2:
sent = []
for t in s:
sent.append(tuple(t.split('\t')))
sents3.append(sent)
corpus.extend(sents3)
return corpus
corpus= txt2corpus("/Users/raquelgarnelonicolas/Desktop/80_sents_untagged.txt")
def get_ngrams(c):
return list(ngrams(c, 2))
当我执行ngrams(corpus)时,我得到了语料库中每个单词的所有元组,但是没有组织。有没有办法从这些元组中获取ngram?我曾考虑过仅使用元组(单词)的位置1创建一个新列表,但是我需要元组中的其余信息才能为新标签编写以下规则(某些规则取决于POS例如,前一个单词的)。你们有什么主意吗?预先谢谢你!