使用 spaCy 从列表数据框中删除停用词
Remove stopwords using spaCy from list dataframe
我想在分词后使用 spaCy 删除停用词。但是,给我一个错误,错误是 AttributeError: 'str' object has no attribute 'is_stop'
我想要做的数据是标记化过程之后的数据,它位于名为 'tokenizing' 的列中
如何解决?
import pandas as pd
from spacy.lang.id import Indonesian
nlp = Indonesian()
data = [
'Aku suka sekali beradai di wilayah yang dingin',
'Kembali jika terjadi sesuatu di sana',
'Sampai berapa lama kamu akan pergi dari sini',
]
df = pd.DataFrame({'text': data})
df['text'] = df['text'].str.lower()
df.head()
#Tokenizing
def tokenize(word):
return [token.text for token in nlp(word)]
df['tokenizing'] = df['text'].apply(tokenize)
df.head()
#Remove stopwords
def stopwords_remover(words):
return [stopwords for stopwords in words if not stopwords.is_stop]
df['stopwords'] = df['tokenizing'].apply(stopwords_remover)
df
您正在处理一个字符串列表,而字符串不是 SpaCy 标记,因此它没有 is_stop
属性。
您需要在 tokenizing
列中保留 SpaCy 令牌列表,将 def tokenize(word)
更改为:
def tokenize(word):
return [token for token in nlp(word)]
输出:
如果您需要在 tokenizing
列中填充标记文本并从头开始制作 stopwords
,请使用
def stopwords_remover(words):
return [stopwords for stopwords in nlp(words) if not stopwords.is_stop]
df['stopwords'] = df['text'].apply(stopwords_remover)
我想在分词后使用 spaCy 删除停用词。但是,给我一个错误,错误是 AttributeError: 'str' object has no attribute 'is_stop'
我想要做的数据是标记化过程之后的数据,它位于名为 'tokenizing' 的列中
如何解决?
import pandas as pd
from spacy.lang.id import Indonesian
nlp = Indonesian()
data = [
'Aku suka sekali beradai di wilayah yang dingin',
'Kembali jika terjadi sesuatu di sana',
'Sampai berapa lama kamu akan pergi dari sini',
]
df = pd.DataFrame({'text': data})
df['text'] = df['text'].str.lower()
df.head()
#Tokenizing
def tokenize(word):
return [token.text for token in nlp(word)]
df['tokenizing'] = df['text'].apply(tokenize)
df.head()
#Remove stopwords
def stopwords_remover(words):
return [stopwords for stopwords in words if not stopwords.is_stop]
df['stopwords'] = df['tokenizing'].apply(stopwords_remover)
df
您正在处理一个字符串列表,而字符串不是 SpaCy 标记,因此它没有 is_stop
属性。
您需要在 tokenizing
列中保留 SpaCy 令牌列表,将 def tokenize(word)
更改为:
def tokenize(word):
return [token for token in nlp(word)]
输出:
如果您需要在 tokenizing
列中填充标记文本并从头开始制作 stopwords
,请使用
def stopwords_remover(words):
return [stopwords for stopwords in nlp(words) if not stopwords.is_stop]
df['stopwords'] = df['text'].apply(stopwords_remover)