我有一个熊猫数据框。 有一栏,我们将其命名为:' col' 此列的每个条目都是单词列表。 [' word1',' word2'等等]
如何使用nltk库有效地计算所有这些单词的引理?
import nltk
nltk.stem.WordNetLemmatizer().lemmatize('word')
我希望能够在pandas数据集的一列中找到所有单元格的所有单词的引理。
我的数据类似于:
import pandas as pd
data = [[['walked','am','stressed','Fruit']],[['going','gone','walking','riding','running']]]
df = pd.DataFrame(data,columns=['col'])
答案 0 :(得分:5)
您可以使用带有函数的pandas中的apply
来对给定字符串中的每个单词进行词形变换。请注意,有许多方法可以对文本进行标记。如果使用空格标记生成器,则可能必须删除.
之类的符号。
下面,我举例说明如何对一列示例数据帧进行词形变换。
import nltk
w_tokenizer = nltk.tokenize.WhitespaceTokenizer()
lemmatizer = nltk.stem.WordNetLemmatizer()
def lemmatize_text(text):
return [lemmatizer.lemmatize(w) for w in w_tokenizer.tokenize(text)]
df = pd.DataFrame(['this was cheesy', 'she likes these books', 'wow this is great'], columns=['text'])
df['text_lemmatized'] = df.text.apply(lemmatize_text)
答案 1 :(得分:2)
|col|
['Sushi Bars', 'Restaurants']
['Burgers', 'Fast Food', 'Restaurants']
wnl = WordNetLemmatizer()
下面创建一个函数,它获取单词列表并返回词形词的列表。这应该有用。
def lemmatize(s):
'''For lemmatizing the word
'''
s = [wnl.lemmatize(word) for word in s]
return s
dataset = dataset.assign(col_lemma = dataset.col.apply(lambda x: lemmatize(x))