删除法语和英语中的停用词
Remove Stopwords in French AND English
我正在尝试删除法语和英语的停用词。到目前为止,我一次只能从一种语言中删除停用词。我有一个包含 700 行法语和英语混合文本的文本文档。
我正在使用 Python 做这 700 行的集群项目。但是,问题出现在我的集群上。我得到了一个充满法语停用词的集群,这扰乱了我集群的效率。
这是我的停用词代码:
stopwords = nltk.corpus.stopwords.words('english')
如前所述,我也试图在其中包含 'french' 停用词,但无法在一行代码或同一变量中这样做。
这是包含我的文件的代码,其中包含我的 700 行混合法语和英语的描述:
Description2 = df['Description'].str.lower().apply(lambda x: '
'.join([word for word in str(x).split() if word not in (stopwords)]))
我试图在上面的代码行中添加 2 个停用词变量,但它只删除了第一个变量的停用词。
这是由于未删除法语停用词而得到的集群示例:
Cluster 5:
la
et
dans
les
des
est
du
le
une
en
如果我能够从我的文档中删除法语停用词,我将能够拥有代表我的文档中重复出现的实际单词的集群。
如有任何帮助,我们将不胜感激。谢谢。
您是否尝试过将法语停用词简单地添加到英语停用词中?例如这种方式(并且使用我将使用 set() for efficiency as mentioned in the nltk tutorial):
stopwords = set(nltk.corpus.stopwords.words('english')) | set(nltk.corpus.stopwords.words('french'))
# This way, you've got the english and french stop words in the stopwords variable
Description2 = df['Description'].str.lower().apply(lambda x: ' '.join([word for word in str(x).split() if word not in stopwords]))
怎么样:
import nltk
import pandas as pd
from functools import reduce
df = pd.DataFrame(data={'Description': ['hello', 'dupa']})
def apply_filtering(val, df):
df['Description'] = df['Description'].str.lower()
df['Description'] = df['Description'].apply(lambda x: str(x).split())
df['Description'] = (df['Description']
.apply(lambda x: [word for word in x if word not in (nltk.corpus.stopwords.words(val))])
)
df['Description'] = df['Description'].apply(lambda x: ''.join(x))
return df
elo = lambda l: reduce(lambda y,x: apply_filtering(x,y), l, df)
elo(['english', 'french'])
我正在尝试删除法语和英语的停用词。到目前为止,我一次只能从一种语言中删除停用词。我有一个包含 700 行法语和英语混合文本的文本文档。
我正在使用 Python 做这 700 行的集群项目。但是,问题出现在我的集群上。我得到了一个充满法语停用词的集群,这扰乱了我集群的效率。
这是我的停用词代码:
stopwords = nltk.corpus.stopwords.words('english')
如前所述,我也试图在其中包含 'french' 停用词,但无法在一行代码或同一变量中这样做。
这是包含我的文件的代码,其中包含我的 700 行混合法语和英语的描述:
Description2 = df['Description'].str.lower().apply(lambda x: '
'.join([word for word in str(x).split() if word not in (stopwords)]))
我试图在上面的代码行中添加 2 个停用词变量,但它只删除了第一个变量的停用词。
这是由于未删除法语停用词而得到的集群示例:
Cluster 5:
la
et
dans
les
des
est
du
le
une
en
如果我能够从我的文档中删除法语停用词,我将能够拥有代表我的文档中重复出现的实际单词的集群。
如有任何帮助,我们将不胜感激。谢谢。
您是否尝试过将法语停用词简单地添加到英语停用词中?例如这种方式(并且使用我将使用 set() for efficiency as mentioned in the nltk tutorial):
stopwords = set(nltk.corpus.stopwords.words('english')) | set(nltk.corpus.stopwords.words('french'))
# This way, you've got the english and french stop words in the stopwords variable
Description2 = df['Description'].str.lower().apply(lambda x: ' '.join([word for word in str(x).split() if word not in stopwords]))
怎么样:
import nltk
import pandas as pd
from functools import reduce
df = pd.DataFrame(data={'Description': ['hello', 'dupa']})
def apply_filtering(val, df):
df['Description'] = df['Description'].str.lower()
df['Description'] = df['Description'].apply(lambda x: str(x).split())
df['Description'] = (df['Description']
.apply(lambda x: [word for word in x if word not in (nltk.corpus.stopwords.words(val))])
)
df['Description'] = df['Description'].apply(lambda x: ''.join(x))
return df
elo = lambda l: reduce(lambda y,x: apply_filtering(x,y), l, df)
elo(['english', 'french'])