2016-04-01 29 views
0

Bu benim ilk sorum olan özür dilerim. Ben bir ds yükledim csv bir dizi tweets tokenize nltk kullanıyorum. Jetonlaştırma iyi çalışır ve böyle bir şeyi [[Benim, dayım, ...]] bir df içindeki bir hücreye çıkarır. Ardından, df sütununun tamamı için jetonlanmış metne bir POS tagger'ı uygulamak istiyorum. Bunu yapmak için aşağıdaki kodu kullanıyorum. Zorlandığım hat df['tagged'] = df['tokenized'].apply(lambda row: [nltk.pos_tag(row) for item in row]). Yanlış öğe üzerinde yinelemediğimi biliyorum (sıraya karşı öğe) ancak bunu yapmak için doğru yolu anlayamıyorum. kod aşağıda: Ben sadece (en azından Python 2.7 ile birlikte) NLTK 3.1 ile değil NLTK 3.2 çalışır pos_tag Birçok Thanks`NLTK, veri tabanlarına uygulandı, listeden nasıl yinelenir

+0

çok sframe' 'çalışmak için daha kolay olabilir, bkz https://github.com/dato-code/SFrame/issues/16# issuecomment-185326257 – alvas

+0

Çok teşekkürler. Bunu deneyeceğim. –

cevap

1

Eğer başvuruyorsanız ile küçük bir hata bulundu

import pandas as pd 
import numpy as np 
import nltk 
from nltk.tokenize import word_tokenize,wordpunct_tokenize 
from nltk.tag import pos_tag 
read_test = pd.read_csv("simontwittertest.csv") 
df = read_test 
df['tokenized'] = df['content'].apply(lambda row: [nltk.wordpunct_tokenize(row) for item in row]) 
df['tagged'] = df['tokenized'].apply(lambda row: [nltk.pos_tag(row) for item in row]) 
print(df['tagged'])` 

ilgi Out Arka arkaya bir lambda fonksiyonu, sen axis=1 belirtmek gerekir:

df['tokenized'] = df['content'].apply(
    lambda row: [nltk.wordpunct_tokenize(row) for item in row], axis=1) 
df['tagged'] = df['tokenized'].apply(
    lambda row: [nltk.pos_tag(row) for item in row], axis=1) 
+0

Teşekkürler. Ben bunu zaten denedim sanırım ama başka bir gideceğim var! –