Разметить предложение и объединить результат в Python - PullRequest
0 голосов
/ 24 января 2019

Я столкнулся с проблемой и мне нужна помощь. У меня есть следующий код:

import nltk
import pandas as pd
from nltk.stem import WordNetLemmatizer
wordnet_lemmatizer = WordNetLemmatizer()

d = {'col1': ['AI is our friend and it has been friendly', 'AI and human have always been friendly']}
df = pd.DataFrame(data=d)

sample_lst = []
for q in df['col1']:

   nltk_tokens = nltk.word_tokenize(q)
   for w in nltk_tokens:
          sample_lst.append(wordnet_lemmatizer.lemmatize(w, pos='v'))
          print(sample_lst)

код работает и добавляет wordnet_lemmatizer.lemmatize в список, однако я хотел бы сохранить результат в CSV-файле прямо рядом с исходным вводом, как этот

Col1                                        Col2
AI is our friend and it has been friendly   IA be our friend and it have be friendly
AI and humans have always been friendly     AI and humans have always be friendly

Я пытался сделать '' .join (), но результат не тот, который я ожидаю, какие-либо мысли о том, как я могу присоединиться к предложению и заранее добавить его в новый столбец.

1 Ответ

0 голосов
/ 24 января 2019

Использование:

#create list for all values
out = []
for q in df['col1']:
   #create list for each value
   sample_lst = []
   nltk_tokens = nltk.word_tokenize(q)
   for w in nltk_tokens:
          sample_lst.append(wordnet_lemmatizer.lemmatize(w, pos='v'))
   #join lists by space
   out.append(' '.join(sample_lst))

df['Col2'] = out
print (df)
                                        col1  \
0  AI is our friend and it has been friendly   
1     AI and human have always been friendly   

                                       Col2  
0  AI be our friend and it have be friendly  
1      AI and human have always be friendly  

Еще одно решение с пониманием вложенного списка:

df['Col2'] = [' '.join(wordnet_lemmatizer.lemmatize(w, pos='v') 
              for w in nltk.word_tokenize(q)) 
              for q in df['col1']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...