Токенизация и POS-теги в Python из файла CSV

Я новичок в Python и хотел бы использовать теги POS после импорта файла csv с моего локального компьютера. Я поискал ресурсы в Интернете и обнаружил, что следующий код работает.

text = 'Senator Elizabeth Warren from Massachusetts announced her support of 
Social Security in Washington, D.C. on Tuesday. Warren joined other 
Democrats in support.'  
import nltk
from nltk import tokenize
sentences = tokenize.sent_tokenize(text)
sentences

from nltk.tokenize import TreebankWordTokenizer
texttokens = []
for sent in sentences:
 texttokens.append(TreebankWordTokenizer().tokenize(sent))
texttokens

from nltk.tag import pos_tag
taggedsentences = []
for sentencetokens in texttokens:
 taggedsentences.append(pos_tag(sentencetokens))
taggedsentences

print(taggedsentences)

Поскольку я распечатал его, результат из приведенного выше кода выглядит следующим образом.

[[('Senator', 'NNP'), ('Elizabeth', 'NNP'), ('Warren', 'NNP'), ('from', 
'IN'), ('Massachusetts', 'NNP'), ('announced', 'VBD'), ('her', 'PRP$'), 
('support', 'NN'), ('of', 'IN'), ('Social', 'NNP'), ('Security', 'NNP'), 
('in', 'IN'), ('Washington', 'NNP'), (',', ','), ('D.C.', 'NNP'), ('on', 
'IN'), ('Tuesday', 'NNP'), ('.', '.')], [('Warren', 'NNP'), ('joined', 
'VBD'), ('other', 'JJ'), ('Democrats', 'NNPS'), ('in', 'IN'), ('support', 
'NN'), ('.', '.')]]

Это желаемый результат, который я хотел бы получить, но я хотел бы получить результат после импорта файла csv, который содержит несколько строк (в каждой строке есть несколько предложений.). Например, файл csv выглядит так:

---------------------------------------------------------------
I like this product. This product is beautiful. I love it. 
---------------------------------------------------------------
This product is awesome. It have many convenient features.
---------------------------------------------------------------
I went this restaurant three days ago. The food is too bad.
---------------------------------------------------------------

В конце концов, я хотел бы сохранить желаемые результаты тегирования pos, которые я показал выше после импорта файла csv. Я хотел бы сохранить (записать) (помеченные pos) каждое предложение в каждой строке в формате csv.

Возможны два формата. Первый может быть следующим (без заголовка, каждое предложение (с тегами pos) в одной строке).

----------------------------------------------------------------------------
[[('I', 'PRON'), ('like', 'VBD'), ('this', 'PRON'), ('product', 'NN')]]
----------------------------------------------------------------------------
[[('This', 'PRON'), ('product', 'NN'), ('is', 'VERB'), ('beautiful', 'ADJ')]]
---------------------------------------------------------------------------
[[('I', 'PRON'), ('love', 'VERB'), ('it', 'PRON')]]
----------------------------------------------------------------------------
...

Второй формат может выглядеть так (без заголовка, каждый набор токенов и тегов pos сохранен в одной ячейке):

----------------------------------------------------------------------------
('I', 'PRON')    | ('like', 'VBD')   | ('this', 'PRON') | ('product', 'NN')
----------------------------------------------------------------------------
('This', 'PRON') | ('product', 'NN') | ('is', 'VERB')   | ('beautiful', 'ADJ')
---------------------------------------------------------------------------
('I', 'PRON')    | ('love', 'VERB')  | ('it', 'PRON')   |
----------------------------------------------------------------------------
...

Я предпочитаю второй формат первому.

Код python, который я написал здесь, отлично работает, но я хотел бы сделать то же самое для файла csv и, в конце концов, сохранить его на моем локальном компьютере.

Конечная цель этого состоит в том, что я хотел бы извлечь из предложений только слова существительного типа (например, NN, NNP).

Может ли кто-нибудь помочь мне исправить код Python?


person Emily    schedule 01.09.2017    source источник
comment
Мне любопытно, как вы планируете использовать получившийся CSV? Я спрашиваю только потому, что попытка перезагрузить это в python с круглыми скобками может стать головной болью.   -  person Tony    schedule 01.09.2017


Ответы (1)


Пожалуйста, обратитесь к вопросу, на который уже был дан ответ здесь. Вы можете просто пометить теги, чтобы отфильтровать только существительные, как описано в сообщении. -nltk "> Ссылка SO

person Sincole Brans    schedule 01.09.2017
comment
Если этот вопрос является дубликатом вашей ссылки, проголосуйте за то, чтобы закрыть его как дубликат. Ответы только по ссылкам не приветствуются. - person Mark Tolonen; 02.09.2017
comment
@Sincole Brans, мне нужны существительные сейчас, но и прилоги мне понадобятся в будущем. Поэтому я хотел бы извлечь все наборы слов и тегов, а не только существительные. Вопрос был больше похож на то, как импортировать файл csv и сохранить результаты в форме csv вместо print, учитывая тот факт, что приведенный выше код работает. Я действительно новичок в python, извините за основной вопрос и путаницу в вопросе. Кроме того, мне не нужны скобки в результатах. Мне просто нужны наборы слов и тегов в особом формате, означающем, что я и программа (R или python) могут различать, какой тег указывает, какое слово - person Emily; 03.09.2017