Как считать местоимения, существительные и глаголы предложений в строках CSV-файла - PullRequest
0 голосов
/ 13 октября 2019

Я хотел посчитать, сколько местоимений, существительных и глаголов существует в строках файла CSV. И сохраните счет в самом файле с новым столбцом. Я довольно новичок с NLTK

Это мой усеченный clues.csv

id  STORY
0   Sitting for long?
1   In his talk titled, 'Is Sitting the New Smoking?'
2   Prolonged sitting is an independent risk factor, even if you exercise regularly.
import pandas as pd
import csv
import nltk
from nltk.tag import pos_tag
from nltk import word_tokenize
from collections import Counter

news = pd.read_csv("clues.csv")

news['token'] = news.apply(lambda row: nltk.word_tokenize(row['STORY']), axis=1)
news['pos_tags'] = news.apply(lambda row: nltk.pos_tag(row['token']), axis=1)

tag_count_df = pd.DataFrame(news['pos_tags'].map(lambda x: Counter(tag[1] for tag in x)).to_list())

news['count']=pd.concat([news, tag_count_df], axis=1).fillna(0).drop(['pos_tags', 'token'], axis=1)


news.to_csv("clues.csv")

Я продолжал получать ValueError: Неверное количество пропущенных предметов 50, размещение подразумевает 1

1 Ответ

1 голос
/ 13 октября 2019

Как то так?

df = pd.read_clipboard(sep='\s\s+')

df['token'] = df.apply(lambda row: nltk.word_tokenize(row['STORY']), axis=1)
df['pos_tags'] = df.apply(lambda row: nltk.pos_tag(row['token']), axis=1)

tag_count_df = pd.DataFrame(df['pos_tags'].map(lambda x: Counter(tag[1] for tag in x)).to_list())

pd.concat([df, tag_count_df], axis=1).fillna(0).drop(['pos_tags', 'token'], axis=1)

Out:

   id                                              STORY   ''    ,  .   CD  \
0   0                                  Sitting for long?  0.0  0.0  1  0.0   
1   1  In his talk titled, 'Is Sitting the New Smoking?'  1.0  1.0  1  1.0   
2   2  Prolonged sitting is an independent risk facto...  0.0  1.0  1  0.0   

    DT  IN   JJ   NN  NNP  PRP  PRP$   RB  VBG  VBN  VBP  VBZ  
0  0.0   1  0.0  0.0  0.0  0.0   0.0  1.0  1.0  0.0  0.0  0.0  
1  1.0   1  0.0  1.0  2.0  0.0   1.0  0.0  1.0  1.0  0.0  0.0  
2  1.0   1  2.0  3.0  0.0  1.0   0.0  2.0  0.0  0.0  1.0  1.0  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...