導航:首頁 > 編程語言 > python中文停用詞

python中文停用詞

發布時間:2022-09-19 15:57:57

『壹』 如何用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 好像就沒有意義了。

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

python中最好不要在list遍歷中使用list.remove方法:

建議使用新的list存儲要保留的內容,然後返回這個新list。比如

a_list=[1,2,3,4,5]
needs_to_be_removed=[3,4,5]
result=[]
forvina_list:
ifvnotinneeds_to_be_removed:
result.append(v)
printresult

『叄』 python 怎麼向textblob中加停用詞

把語料從資料庫提取出來以後就要進行分詞啦,我是在linux環境下做的,先把jieba安裝好,然後找到內容是build jieba PKG-INFO setup.py test的那個文件夾(我這邊是jieba-0.38),把自己的自定義詞典(選用,目的是為了分出原始詞庫中沒有的詞以及優先分出一些詞),停用詞詞典(選用),需要分詞的語料文件,調用jieba的python程序都放到這個文件夾里,就可以用啦。至於詞典要什麼樣的格式,在網上一查就可以了。

之前有看到別的例子用自定義詞典替換掉jieba本身詞典,但是我試了一下好像效果不行,假設原始詞典中有』雲『,』計算『而沒有』雲計算『,我想要分出』雲計算『這個詞,載入自定義詞典可以成功,但替換原始詞典就不一定成功了。(當然我說的也不一定對)

還有停用詞詞典,我之前是把停用詞在程序里存入一個列表,然後分每個詞時都循環一遍列表,這樣特別浪費時間。後來把停用詞做成字典就很快了。

for eachline in fin可避免memory error。如果還是報memory error,那應該就是輸入語料文件單行數據多長了。

#!/usr/bin/python #-*- encoding:utf-8 -*- import jieba #導入jieba模塊import re
jieba.load_userdict("newdict.txt") #載入自定義詞典 import jieba.posseg as pseg

def splitSentence(inputFile, outputFile): #把停用詞做成字典
stopwords = {}
fstop = open('stop_words.txt', 'r') for eachWord in fstop:
stopwords[eachWord.strip().decode('utf-8', 'ignore')] = eachWord.strip().decode('utf-8', 'ignore')
fstop.close()

fin = open(inputFile, 'r') #以讀的方式打開文件
fout = open(outputFile, 'w') #以寫得方式打開文件
jieba.enable_parallel(4) #並行分詞
for eachLine in fin:
line = eachLine.strip().decode('utf-8', 'ignore') #去除每行首尾可能出現的空格,並轉為Unicode進行處理
line1 = re.sub("[0-9s+.!/_,$%^*()?;;:-【】+"']+|[+——!,;:。?、~@#¥%……&*()]+".decode("utf8"), "".decode("utf8"),line)
wordList = list(jieba.cut(line1)) #用結巴分詞,對每行內容進行分詞
outStr = ''
for word in wordList: if word not in stopwords:
outStr += word
outStr += ' '
fout.write(outStr.strip().encode('utf-8') + ' ') #將分詞好的結果寫入到輸出文件 fin.close()
fout.close()

splitSentence('ss.txt', 'tt.txt')

『肆』 如何刪除「使用NLTK或者python停用詞"

Nltk是python下處理語言的主要工具包,可以實現去除停用詞、詞性標注以及分詞和分句等。

安裝nltk,寫python一般使用的是集成環境EPD,其中有包管理,可以在線進行安裝。如果不是集成環境,可以通過pip install nltk安裝。

》pip install nltk #安裝nltk

》nltk.download() #彈出一個選擇框,可以按照自己需要的語義或者是功能進行安裝

一般要實現分詞,分句,以及詞性標注和去除停用詞的功能時,需要安裝stopwords,punkt以及

當出現LookupError時一般就是由於缺少相關模塊所導致的

則是需要安裝punkt,這個模塊主要負責的是分詞功能。同stopwords一樣有兩種方式安裝。

『伍』 python 中文切詞使用停用詞表問題


python中最好不要在list遍歷中使用list.remove方法:

建議使用新的list存儲要保留的內容,然後返回這個新list。比如

a_list=[1,2,3,4,5]
needs_to_be_removed=[3,4,5]
result=[]
forvina_list:
ifvnotinneeds_to_be_removed:
result.append(v)
printresult



『陸』 python jieba分詞如何去除停用詞

-*- coding: utf-8 -*-
import jieba
import jieba.analyse
import sys
import codecs
reload(sys)
sys.setdefaultencoding('utf-8')

#使用其他編碼讀取停用詞表
#stoplist = codecs.open('../../file/stopword.txt','r',encoding='utf8').readlines()
#stoplist = set(w.strip() for w in stoplist)
#停用詞文件是utf8編碼
stoplist = {}.fromkeys([ line.strip() for line in open("../../file/stopword.txt") ])

#經過分詞得到的應該是unicode編碼,先將其轉成utf8編碼

『柒』 python jieba停用詞該如何設置

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

『捌』 在Python中,我有一個字典,想在字典中刪除停用詞表中的單詞,程序應該怎麼編。

en_dict={}
stop_en_dict={}

forkeyinstop_en_dict.keys():
ifkeyinen_dict:
delen_dict[key]

printen_dict

閱讀全文

與python中文停用詞相關的資料

熱點內容
壓縮因子定義 瀏覽:966
cd命令進不了c盤怎麼辦 瀏覽:212
葯業公司招程序員嗎 瀏覽:972
毛選pdf 瀏覽:657
linuxexecl函數 瀏覽:725
程序員異地戀結果 瀏覽:372
剖切的命令 瀏覽:226
干什麼可以賺錢開我的世界伺服器 瀏覽:288
php備案號 瀏覽:989
php視頻水印 瀏覽:167
怎麼追程序員的女生 瀏覽:487
空調外壓縮機電容 瀏覽:79
怎麼將安卓變成win 瀏覽:459
手機文件管理在哪兒新建文件夾 瀏覽:724
加密ts視頻怎麼合並 瀏覽:775
php如何寫app介面 瀏覽:804
宇宙的琴弦pdf 瀏覽:396
js項目提成計算器程序員 瀏覽:944
pdf光子 瀏覽:834
自拍軟體文件夾名稱大全 瀏覽:328