Entschuldigung im Voraus, da dies meine erste Frage ist. Ich benutze nltk, um eine Reihe von Tweets von einem csv zu token, die ich in ein df geladen habe. Die Tokenization funktioniert gut und gibt so etwas wie [[Mein, Onkel, ...]] in eine Zelle in einem df aus. Ich möchte dann einen POS-Tagger auf den Token-Text für die gesamte Spalte des df anwenden. Ich benutze den Code unten, um es zu tun. Die Linie, mit der ich Schwierigkeiten habe, ist df['tagged'] = df['tokenized'].apply(lambda row: [nltk.pos_tag(row) for item in row])
. Ich weiß, dass ich auf das falsche Element (Zeile versus Element) iteriere, kann aber den richtigen Weg nicht finden. Der Code ist unten:NLTK auf Datenrahmen angewendet, wie man durch die Liste iteriert
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'])`
Aus Interesse habe ich einen kleinen Fehler mit pos_tag gefunden, die nur mit NLTK 3.1 nicht NLTK 3.2 (zumindest mit Python 2.7) Viele Thanks`
Es könnte einfacher sein, zu arbeiten, sehen https://github.com/dato-code/SFrame/issues/16# Issue Comment-185326257 – alvas
Vielen Dank. Ich werde es versuchen. –