Добро пожаловать в StackOverflow.
У вашей проблемы может быть две причины.
1) Возможно, вы изменили набор данных. Для этого я бы проверил набор данных и проверил, вносили ли вы какие-либо изменения в сами данные. Потому что ваш код работает на других примерах и не будет меняться изо дня в день, потому что в нем нет случайных элементов.
2) Второй проблемой может быть использование df.description
при вызове столбца данных в этой строке:
sent = nltk.word_tokenize(str(df.description))
вы получите усеченный вывод. Посмотрите на тип df.description
, и это Series
объект.
Я создал другой пример, и он выглядит следующим образом:
from nltk.tokenize import word_tokenize
import pandas as pd
df = pd.DataFrame({'description' : ['The OP is asking a question and I referred him to the Minimum Verifible Example page which states: When asking a question, people will be better able to provide help if you provide code that they can easily understand and use to reproduce the problem. This is referred to by community members as creating a minimal, reproducible example (reprex), a minimal, complete and verifiable example (mcve), or a minimal, workable example (mwe). Regardless of how it\'s communicated to you, it boils down to ensuring your code that reproduces the problem follows the following guidelines:']})
print(df.description)
0 The OP is asking a question and I referred him...
Name: description, dtype: object
Как вы видите выше, он усекается и это не полный текст в столбце description
.
Я рекомендую вашему коду заглянуть в эту строку кода и найти другой способ сделать это:
sent = nltk.word_tokenize(str(df.description))
Обратите внимание, что метод, который вы использовали в своем коде, будет включать в себя номер индекса (который, как я понимаю, вы фильтровали по isalpha
), а также этот Name: description, dtype: object
в данных, которые вы обрабатываете.
Один из способов будет использовать map
для обработки ваших данных. Пример:
pd.set_option('display.max_colwidth', -1)
df['tokenized'] = df['description'].map(str).map(nltk.word_tokenize)
Продолжайте делать это и для других операций. Простой способ сделать это - создать функцию предварительной обработки, которая применяет все операции предварительной обработки (которые вы хотите использовать) к вашему фрейму данных.
Надеюсь, это поможет.