Как я могу получить файл с пометкой pos как вывод, когда я даю текстовый файл как ввод? - PullRequest
0 голосов
/ 28 февраля 2019

Это код, который я пытаюсь, но код генерирует ошибку.

import nltk
from nltk.corpus import stopwords 
from nltk.tokenize import word_tokenize, sent_tokenize 
stop_words = set(stopwords.words('english')) 

file_content = open("Dictionary.txt").read()
tokens = nltk.word_tokenize(file_content)

# sent_tokenize is one of instances of 
# PunktSentenceTokenizer from the nltk.tokenize.punkt module 

tokenized = sent_tokenize(tokens) 
for i in tokenized: 

    # Word tokenizers is used to find the words 
    # and punctuation in a string 
    wordsList = nltk.word_tokenize(i) 

    # removing stop words from wordList 
    wordsList = [w for w in wordsList if not w in stop_words] 

    # Using a Tagger. Which is part-of-speech 
    # tagger or POS-tagger. 
    tagged = nltk.pos_tag(wordsList) 

    print(tagged) 

Ошибка:

Traceback (последний вызов последний): Файл "tag.py", строка 12, в файле tokenized = sent_tokenize (tokens) "/home/mahadev/anaconda3/lib/python3.7/site-packages/nltk/tokenize/init.py ",

строка 105, в sent_tokenize вернуть файл tokenizer.tokenize (text)" /home/mahadev/anaconda3/lib/python3.7/site-packages/nltk/tokenize/punkt.py",

строка 1269, в списке возврата токена (self.sentences_from_text (text, realign_boundaries)) Файл "/home/mahadev/anaconda3/lib/python3.7/site-packages/nltk/tokenize/punkt.py",

строка 1323 в предложениях_от_тексте возвращает [текст [s: e] для s, e в self.span_tokenize (text, realign_boundaries)] Файл "/home/mahadev/anaconda3/lib/python3.7/site-packages / nltk / tokenize / punkt.py ",

строка 1323, взамен [text [s: e] для s, e в self.span_tokenize (text, realign_boundaries)] File" / home / mahadev /anaconda3 / Библиотека / python3.7 / site-packages / nltk / tokenize / punkt.py ",

, строка 1313, в span_tokenize для sl в слайсах: Файл" /home/mahadev/anaconda3/lib/python3.7/site-packages / nltk / tokenize / punkt.py ",

строка 1354, в _realign_boundaries для sl1, sl2 в _pair_iter (фрагменты): файл" /home/mahadev/anaconda3/lib/python3.7/site-packages/nltk/tokenize/punkt.py",

строка 317, в _pair_iter prev = next (it) файл "/home/mahadev/anaconda3/lib/python3.7/site-packages/nltk/tokenize/punkt.py ",

строка 1327, в _slices_from_text для совпадения в self._lang_vars.period_context_re (). finditer (text): TypeError: ожидаемая строка или байтовоподобный объект

1 Ответ

0 голосов
/ 28 февраля 2019

Не знаю, что должен делать ваш код, но ошибка, которую вы получаете, вызвана типом данных для вашей переменной tokens .Он хочет строки, но получает список данных другого типа.

Вы должны изменить эту строку на:

tokens = str(nltk.word_tokenize(file_content))
...