как решить элемент последовательности 0: ожидаемый экземпляр str, найден кортеж - PullRequest
0 голосов
/ 06 мая 2018

Я пытаюсь сделать POS_Tagging, используя nltk (код ниже), и сталкиваюсь с вышеуказанной проблемой, когда пытаюсь записать новый файл. если я запускаю #fout.write("\n".join(tagged)) this, то он говорит вышеуказанную ошибку, подсчитывает и решает, что когда я запускаю #fout.write(str.join(tagged)) this, он говорит 'join' requires a 'str' object but received a 'list'

Текстовый файл хранится локально и имеет относительно большой размер

from pathlib import Path
from nltk.tokenize import word_tokenize as wt
import nltk
import pprint

output_dir = Path ("\\Path\\")
output_file = (output_dir / "Token2290newsML.txt")

news_dir = Path("\\Path\\")
news_file = (news_dir / "2290newsML.txt")

tagged_dir = Path("\\Path\\")
tagged_file = (tagged_dir / "tagged2290newsML.txt")

file = open(news_file, "r")
data = file.readlines()

f = open(tagged_file, "w")

def process_content():
    try:
        for i in data:
            words = wt(i)
            pprint.pprint(words)
            tagged = nltk.pos_tag(words)
            pprint.pprint(tagged)
            #f.write("\n".join(tagged))
            f.write(str.join(tagged))

    except Exception as e:
        print(str(e))

process_content()
file.close()

Любая помощь будет оценена

спасибо:)

1 Ответ

0 голосов
/ 06 мая 2018

nltk.pos_tag() возвращает список из двух кортежей. Первый элемент каждого кортежа - это слово, второй - часть речевого тега, соответствующего слову. Например:

>>> tagged = nltk.pos_tag('This is a test'.split())
>>> tagged
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('test', 'NN')]

Предполагая, что вы хотите написать каждое слово и его тег в строке:

with open(tagged_file, 'w') as f:
    for pair in tagged:
        print(' '.join(pair), file=f)

Это создаст файл, содержащий:

This DT
is VBZ
a DT
test NN

Вы можете изменить формат файла при необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...