Я работаю с корпусом, помеченным для зависимостей. Каждое слово корпуса представляет собой кортеж, содержащий 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))
Когда я делаю нграммы (корпус), я получаю все кортежи для каждого слова в корпусе, но не организовано. Есть ли способ получить нграммы из этих кортежей? Я думал о создании нового списка только с позицией 1 кортежа (словом), но мне нужна остальная информация в кортеже, чтобы написать следующие правила для новых тегов (некоторые правила зависят от POS предыдущего слова, например). Ребята, у вас есть идеи? Заранее спасибо!