【问题标题】:how to get a list of words after cleaning the data with stemming使用词干清理数据后如何获取单词列表
【发布时间】:2021-11-16 23:10:36
【问题描述】:

目前,我只得到一排。我怎样才能得到所有的单词?目前,我有一列单词。词干分析器中的问题。它只给出一行而不是所有单词。

我的目的是清理数据并打印用逗号分隔的所有单词。

输入:word1,word2,word3,word4,word5 在每一行在列df[tag]

输出将是一个长列表,包含所有值 word1,word2,word3,word4,word5,word6,word7....

from nltk.corpus import stopwords
import re
from nltk.stem import PorterStemmer
import pandas as pd 
import spacy
import pytextrank

from nltk.tokenize import word_tokenize
from nltk.stem import PorterStemmer

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import TfidfVectorizer 



def Clean_stop_words(data): 
#print(stopwords.words('english'))
    stop_words=stopwords.words('english')
    new_data="" 
    for word in data:
        np.char.lower(word)
        if word not in stop_words:
            new_data = data + " , " + word
    print(new_data)
    symbols = "!\"#$%&()*+-./:;<=>?@[\]^_`{|}~\n"
    for i in symbols:
        new_data = np.char.replace(new_text, i, ' ')
    #print(data) 
    stemmer=PorterStemmer()
    new_data=stemmer.stem(word)
    #print(new_data)

Clean_stop_words(df["Tag"])
#print(data)

提前谢谢你

【问题讨论】:

  • 举例说明您的输入和预期输出
  • 已添加到帖子中

标签: python pandas dataframe numpy stemming


【解决方案1】:

通知 -

我决定用正则表达式清除特殊字符,如果您愿意,可以更改方法。

另外,请看pandas的apply函数,它取每一行并执行Clean_stop_words函数。

from nltk.corpus import stopwords
from nltk.stem import PorterStemmer
import numpy as np
import pandas as pd
import re

l = ["'word1,wording,w#ord,he##llo,sleeping,don't"]
df = pd.DataFrame(l, columns=['Tag'])


def Clean_stop_words(data):
    stemmer = PorterStemmer()
    stop_words=stopwords.words('english')
    new_data=""
    data_split = data.split(',')
    for word in data_split:
        np.char.lower(word)
        word = re.sub('[^A-Za-z0-9]+', '', word)
        if word not in stop_words:
            stemmer.stem(word)
            new_data = new_data + " , " + word
    return new_data

df['Tag'] = df['Tag'].apply(Clean_stop_words)
print(df['Tag'])

【讨论】:

  • 目前我得到了单词,但连接了 5 个单词,它们是逗号等等。我添加了 data_split = data.str.split(',').str.join(',')
猜你喜欢
  • 1970-01-01
  • 2022-01-10
  • 2018-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-23
  • 2022-01-25
  • 1970-01-01
相关资源
最近更新 更多