當前位置:首頁 » 編程語言 » 去停用詞python

去停用詞python

發布時間: 2024-03-31 20:23:26

python中從列表中用for循環刪除(remove方法)停用詞特別慢,有快一點的方法嗎

循環刪除,必須用循環語句,而循環語句就那麼幾個!!

⑵ 如何用python對一個文件夾下的多個txt文本進行去停用詞

在用 for 循環去停用詞的部分,出錯,僅去掉了 stopwords 中的部分停用詞,且相同停用詞只去除了一次。求大神告知錯誤之處,貼上代碼再好不過!!
#encoding=utf-8
import sys
import re
import codecs
import os
import shutil
import jieba
import jieba.analyse

#導入自定義詞典
#jieba.load_userdict("dict_.txt")

#Read file and cut
def read_file_cut():

#create path
stopwords = {}.fromkeys([ line.strip() for line in open('stopword.txt') ])
path = "Lon\\"
respath = "Lon_Result\\"
if os.path.isdir(respath): #如果respath這個路徑存在
shutil.rmtree(respath, True) #則遞歸移除這個路徑
os.makedirs(respath) #重新建立一個respath目錄

num = 1
while num<=20:
name = "%d" % num
fileName = path + str(name) + ".txt"
resName = respath + str(name) + ".txt"
source = open(fileName, 'r')
if os.path.exists(resName):
os.remove(resName)
result = codecs.open(resName, 'w', 'utf-8')
line = source.readline()
line = line.rstrip('\n')

while line!="":
line = unicode(line, "utf-8")
output=''
seglist = jieba.cut(line,cut_all=False)
for seg in seglist:
seg=seg.encode('utf-8')
if seg not in stopwords:
output+=seg
output = ' '.join(list(seglist))#空格拼接
print output
result.write(output + '\r\n')
line = source.readline()
else:
print 'End file: ' + str(num)
source.close()
result.close()
num = num + 1
else:
print 'End All'

#Run function
if __name__ == '__main__':
read_file_cut()

我覺得是這樣啦:
...
seglist = jieba.cut(line,cut_all=False)
seglist = (seg.encode('utf-8') for seg in seglist)
seglist = [seg for seg in seglist if seg not in stopwords]
output = ' '.join(seglist)
print output
...

不太懂你這兩行的意思:
output+=seg
output = ' '.join(list(seglist))#空格拼接

每次 output 都會被設定成 ' '.join(list(seglist)) 那 output+=seg 好像就沒有意義了。

⑶ 以下函數可以實現分詞,但是為什麼去停用詞沒有效果呢問題在哪裡

我覺得可能還是編碼不對吧。我也遇到這種情況,所以搜到了這個問題,查了很多東西也沒有個結果。
我最開始數據都是用GB2312處理的,後來用結巴分詞看文檔上說用好用utf-8編碼,就寫了段代碼把文本改成utf-8了,然後停用詞文件也是用的utf-8保存的,但是不是用代碼保存的,使用Notpad,之後就一直不能停用文件里的詞。
後來,在代碼中加了幾個比較明顯的停用片語成的list,當分出來的詞不在list里的時候,才輸出該詞,結果就成功的停用了list里的所有詞。
建議樓主再調整一下編碼試試吧。
另外,我最開始用的是Python2.7.10,因為停用詞沒反應,我查到一個網頁說他用Python3.4就好了,我又換了Python3.4.3,可是一樣不能用,然後向我上面那麼做的就好了,Python2.7還沒有試,估計問題都差不多了吧...
樓主加油!Python程序猿加油!

⑷ python英文去停用詞,報錯 'str' object has no attribute 'word'

你把w.word改成w就可以了

⑸ python jieba停用詞該如何設置

你把你的停用詞排一下序,然後再給結巴看看。
或者加兩個停用詞,一個河北、一個西南部。
停用詞通常是很短的高頻出現的詞語,真實情況你這樣的不多。
如果你這種情況,不妨先分詞,也不去停用詞。
然後自己再來後續處理。

⑹ Python SnowNLP情感分析實踐與優化總結

由於語料缺乏,前期若使用到情感分析,建議暫時使用SnowNLP(此模塊主要使用淘寶評論語料)做情感挖掘,但不僅僅為單純調用,需要優化,下面是一些實踐思考:

可在此基礎上優化,比如文本需要特別處理,除了平常的去停用詞外,還可以需要對輸入的文本結合詞性等進行處理。

下面是一些常識:

一)無情感的詞語(如去停用詞,去掉語氣詞,無詞性標簽的詞語)

二)對於文本過長,則可以考慮提取關鍵詞或抽取文本摘要後再提取關鍵詞

對於後者實踐結果差異明顯:

以"發布了頭條文章: 《5分鍾11億!京東雙11場景化產品消費增長明顯》 5分鍾11億!京東雙11場景化產品消費增長明顯 "為例子, 顯然該文本為「積極****」文本。

1)s = SnowNLP("發布了頭條文章:《5分鍾11億!京東雙11場景化產品消費增長明顯》 5分鍾11億!京東雙11場景化產品消費增長明顯")

得分為0.5,明顯不符合

2)s = SnowNLP(「 」.join(jieba.analyse.textrank("發布了頭條文章:《5分鍾11億!京東雙11場景化產品消費增長明顯》 5分鍾11億!京東雙11場景化產品消費增長明顯")))

而對於文本特別長的,則可以先抽取摘要,再對摘要提取關鍵詞。

這主要由於此SnowNLP主要用貝葉斯機器學習方法進行訓練文本,機器學習在語料覆蓋上不夠,特徵上工程處理不當會減分,也沒考慮語義等。

為何要考慮語義層面:

以「 蘇寧易購,是誰給你們下架OV的勇氣****」 中的「 下架」其實才是中心詞(為表達憤怒的文本),但「 勇氣 」為下架的賓語(其為積極的文本),此句應該結果小於0.5,但實際為0.88,去掉「蘇寧易購」則為0.6>

熱點內容
sql數據結構 發布:2024-11-28 16:32:13 瀏覽:713
scratch編程自學 發布:2024-11-28 16:09:15 瀏覽:825
蘇州cnc編程學徒招聘 發布:2024-11-28 16:07:44 瀏覽:610
linux中怎麼搭建http伺服器配置 發布:2024-11-28 16:04:17 瀏覽:291
緩存expires 發布:2024-11-28 16:02:27 瀏覽:383
圖像的jpeg壓縮matlab 發布:2024-11-28 16:02:05 瀏覽:940
androidcompilewith 發布:2024-11-28 16:00:19 瀏覽:435
訪問跳轉 發布:2024-11-28 15:54:44 瀏覽:698
演算法對算 發布:2024-11-28 15:41:38 瀏覽:4
稱重系統界面如何找配置項 發布:2024-11-28 15:28:29 瀏覽:570