Ошибка в NLP «ожидаемая строка или байтовый объект» - PullRequest
0 голосов
/ 08 мая 2020

Я хочу преобразовать текст для подходящей «обработки естественного языка»

В столбце «ТЕКСТ» около 3000+ книг, каждая строка имеет огромный текст или по одной книге в каждой строке, поэтому, когда я применяю это code Я получаю сообщение об ошибке, как показано ниже.

Когда я применяю приведенный ниже код

 import re
 import nltk
 nltk.download('stopwords')
 from nltk.corpus import stopwords
from nltk.stem.porter import PorterStemmer
corpus = []
for i in range(len(dt)):
     review = re.sub('[^a-zA-Z0-9]', ' ', dt['TEXT'][i])
     review = review.lower()
     review = review.split()
     ps = PorterStemmer()
     review = [ps.stem(word) for word in review if not word in set(stopwords.words('english'))]
     review = ' '.join(review)
     corpus.append(review)

, я получаю следующую ошибку

TypeError                                 Traceback (most recent call last)
<ipython-input-16-47569f8727fa> in <module>
       6 corpus = []
       7 for i in range(1000,2000):
  ----> 8     review = re.sub('[^a-zA-Z0-9]', ' ', dt['TEXT'][i])
       9     review = review.lower()
      10     review = review.split()

      ~\anaconda3\lib\re.py in sub(pattern, repl, string, count, flags)
      190     a callable, it's passed the Match object and must return
      191     a replacement string to be used."""
     --> 192     return _compile(pattern, flags).sub(repl, string, count)
     193 
     194 def subn(pattern, repl, string, count=0, flags=0):

     TypeError: expected string or bytes-like object

1 Ответ

0 голосов
/ 08 мая 2020

Это означает, что в столбце TEXT вашего DataFrame есть значения, которые не являются строками.

Вместо этого вы можете сделать это:

for i in range(len(df)): 
    try: 
        re.sub('[^a-zA-Z0-9]', ' ', df['TEXT'][i])
        # the rest of your code ...  
    except TypeError: 
        pass 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...