有没有办法从元组中获取ngram?

时间:2019-05-27 09:14:54

标签: python-3.x nlp nltk

我正在使用标记有依赖性的语料库。语料库的每个单词都是一个元组,包含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例如,前一个单词的)。你们有什么主意吗?预先谢谢你!

0 个答案:

没有答案