Как отделить предложение от фреймов с библиотекой nltk? - PullRequest
0 голосов
/ 26 марта 2020

Я хочу создать модели мешков слов, но с вычислением относительных частот с пакетом nltk. Мои данные построены с pandas dataframe.

Вот мои данные:

text    title   authors label
0   On Saturday, September 17 at 8:30 pm EST, an e...   Another Terrorist Attack in NYC…Why Are we STI...   ['View All Posts', 'Leonora Cravotta']  Real
1   Story highlights "This, though, is certain: to...   Hillary Clinton on police shootings: 'too many...   ['Mj Lee', 'Cnn National Politics Reporter']    Real
2   Critical Counties is a CNN series exploring 11...   Critical counties: Wake County, NC, could put ...   ['Joyce Tseng', 'Eli Watkins']  Real
3   McCain Criticized Trump for Arpaio’s Pardon… S...   NFL Superstar Unleashes 4 Word Bombshell on Re...   []  Real
4   Story highlights Obams reaffirms US commitment...   Obama in NYC: 'We all have a role to play' in ...   ['Kevin Liptak', 'Cnn White House Producer']    Real
5   Obama weighs in on the debate\n\nPresident Bar...   Obama weighs in on the debate   ['Brianna Ehley', 'Jack Shafer']    Real

И я попытался преобразовать их в строку

import nltk 
import numpy as np
import random
import bs4 as bs
import re

data = df.astype(str)
data

Однако , когда я пытаюсь токенизировать слово, у него появляется ошибка, подобная этой

corpus = nltk.sent_tokenize(data['text'])

TypeError: expected string or bytes-like object

Но, похоже, это не работает :( Кто-нибудь знает, как маркировать предложения в каждой строке столбца ['text']?

1 Ответ

0 голосов
/ 26 марта 2020

nltk.tokenize() требует, чтобы входные данные были строкой, вы получаете сообщение об ошибке, потому что вы непосредственно передаете объект pandas .Series:

Попробуйте выполнить токенизацию по словам :

data['Corpus'] = df.text.apply(lambda x: nltk.word_tokenize(x))

Для sent_tokenize изменить:

data['Sent'] = df.text.apply(lambda x: nltk.sent_tokenize(x))

Если вы также хотите избавиться от пунктуации:

data['no_punc'] = df.text.apply(lambda x: nltk.RegexpTokenizer(r'\w+').tokenize(x))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...