python去除中文停用词_删除停止词Python
你不需要在用戶定義的函數中構造所有的代碼,我不確定這背后是否有原因,但問題非常簡單,在閱讀完你的datafrme之后,可以用實際上2行代碼簡潔地解決。在import pandas as pd
from nltk.corpus import stopwords
創建停止語列表
^{pr2}$
輸出['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', "you're"]
我將演示如何使用約翰·濟慈的一首詩的前幾行,這是一個.txt文件,我把它讀入數據幀。在df = pd.read_table('keats.txt', error_bad_lines = False, header = -1 , names = ['poem'], na_filter= True)
df
{a1}
將新列添加到df call itcleaned,其中每一行都是小寫并按空格拆分
這實際上是您處理的第一步
您可以使用
1)lambda運算符df['cleaned'] = list(map(lambda x: x.lower().split(), df.poem))
或2)listcompdf['cleaned'] = [x.lower().split() for x in df.poem]
第二步也是最后一步是過濾停止詞,最簡單的方法是使用map和filter相結合。
將此列作為df的第三列:df['filtered'] = list(map(lambda line: list(filter(lambda word: word not in stop_words, line)), df.cleaned))
df
因此,正如我前面提到的,您只需要兩行代碼就可以處理數據幀。
.
.
.
在最后一步中還有一點需要解包,讓我們看一下列中的第一行df.清潔在df.cleaned[0]
輸出['deep', 'in', 'the', 'shady', 'sadness', 'of', 'a', 'vale']
map(filter(lambda x: according to condition, data_source))的作用是過濾不在停止詞中的單詞list(filter(lambda word: word not in stop_words, df.cleaned[0]))
輸出['deep', 'shady', 'sadness', 'vale']
此篩選器語句充當一個函數,可以將其傳遞到map(function, column)
其中filter是函數參數,列是列df.cleaned
因此,過濾(系統)將被迭代地應用于每一行,結果將被發布到新的列中。
如果仔細觀察,可以看到map/filter語句的框架如下所示:
映射(lambda:行,過濾器(lambda word:字不在停止字中,行),源代碼_u行)
請注意,行是如何從數據幀中的每一行中提取的,然后傳遞到篩選表達式中,在該表達式中篩選該行中的單詞。在
希望我澄清這件事做得很好。
.
.
. 在
既然您是python新手,請允許我分享一些想法
python是一種優雅的語言,其目的是簡潔易讀。我們能做的最困難的事情就是寫顯式for循環,除非必要的for循環幾乎總是可以用listcomps或生成器表達式替換。用戶定義函數也是如此。在
2-有很多it代碼是從2.7繼承的,比如words[:]例如,你不再需要[:]位了。在
3-試著理解容器的屬性,python中的容器是像list,tuple,set,dict。當你試圖對集合進行切片時,通常會返回集合上面的錯誤,我的意思是subset,take-part。如果你有一個集合,調用是set_1,你做set_1[:10],你得到{}。這是因為在python中,集合是非序列容器,這意味著集合的元素沒有分配索引,因此不能像處理列表那樣對集合進行排序或子集化,也不能調用第一、第二或第n個元素。可以使用dir(object)顯示對象的實例方法和屬性
4-永遠不要停止修改代碼
總結
以上是生活随笔為你收集整理的python去除中文停用词_删除停止词Python的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: studioone精调效果包_cnocr
- 下一篇: win32api.sendmessage