ожидаемая строка или байтовоподобный объект NLTK Mysql - PullRequest
0 голосов
/ 19 марта 2019

Можете ли вы помочь мне с этой ошибкой?

def get_db():
    mydb = mysql.connector.connect(
    host="localhost",
    user="root",
    password="",
    database="cosmos"
    )
    mycursor = mydb.cursor()
    sql_select="SELECT article FROM crawling_sm"
    mycursor.execute(sql_select)
    data=mycursor.fetchall()
    for z in range(len(data)):
        text_sents=sent_tokenize(data[z])

def process_text(text_article):
    text_sents=text_article
    text_sents_clean = [remove_string_special_characters(s) for s in text_sents] #if s.istitle() == False]
    doc_info = get_doc(text_sents_clean)
    #freqDict_list = create_freq_dict(text_sents_clean)
    #TF_scores = computeTF(doc_info, freqDict_list)
    print(text_sents)

    get_db()

сообщение об ошибке - статья, которую я выбрал из базы данных, не может быть разбита на некоторый текст, я пытаюсь использовать sent_tokenize, но ожидается некоторое сообщение об ошибкестрока или байтовоподобный объект

сообщение об ошибке:

Файл "C: \ Users \ Ноутбук HP \ Anaconda3 \ lib \ site-packages \ nltk \ tokenize \ punkt.py ", строка 1295, в _slices_from_text для совпадения в self._lang_vars.period_context_re (). finditer (text):

TypeError: ожидаемая строка или байтовоподобный объект

1 Ответ

1 голос
/ 20 марта 2019

Проблема

data = mycursor.fetchall()

возвращает список кортежей , даже если запрос возвращает один столбец.

Так что вместо того, чтобы возвращать что-то вроде

['a', 'b', 'c', 'd', 'e', 'f']

возвращает

[('a',), ('b',), ('c',), ('d',), ('e',), ('f',)]

Решение состоит в том, чтобы передать первый элемент каждого кортежа в функцию sent_tokenize.

for row in data:
    text_sents = sent_tokenize(row[0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...