本次作業的要求來自於:
一、中文詞頻統計
2. 從檔案讀取待分析文字。
3. 安裝並使用jieba進行中文分詞。
4. 更新詞庫,加入所分析物件的專業詞彙。
jieba.add_word('三國演義') #逐個新增
jieba.load_userdict(word_dict) #詞庫文字檔案
轉換**:scel_to_text
#5. 生成詞頻統計-*- coding: utf-8 -*-
import
struct
importos
#拼音表偏移,
startpy = 0x1540; #
漢語片語表偏移
startchinese = 0x2628; #
全域性拼音表
gpy_table ={}
#原始位元組碼轉為字串
defbyte2str(data):
pos =0
str = ''
while pos
c = chr(struct.unpack('
h', bytes([data[pos], data[pos + 1]]))[0])
if c !=chr(0):
str +=c
pos += 2
return
str
#獲取拼音表
defgetpytable(data):
data = data[4:]
pos =0
while pos
index = struct.unpack('
h', bytes([data[pos],data[pos + 1]]))[0]
pos += 2lenpy = struct.unpack('
h', bytes([data[pos], data[pos + 1]]))[0]
pos += 2py = byte2str(data[pos:pos +lenpy])
gpy_table[index] =py
pos +=lenpy #
獲取乙個片語的拼音
defgetwordpy(data):
pos =0
ret = ''
while pos
index = struct.unpack('
h', bytes([data[pos], data[pos + 1]]))[0]
ret +=gpy_table[index]
pos += 2
return
ret
#讀取中文表
defgetchinese(data):
gtable =
pos =0
while pos
#同音詞數量
same = struct.unpack('
h', bytes([data[pos], data[pos + 1]]))[0]
#拼音索引表長度
pos += 2py_table_len = struct.unpack('
h', bytes([data[pos], data[pos + 1]]))[0]
#拼音索引表
pos += 2py = getwordpy(data[pos: pos +py_table_len])
#中文片語
pos +=py_table_len
for i in
range(same):
#中文片語長度
c_len = struct.unpack('
h', bytes([data[pos], data[pos + 1]]))[0]
#中文片語
pos += 2word = byte2str(data[pos: pos +c_len])
#擴充套件資料長度
pos +=c_len
ext_len = struct.unpack('
h', bytes([data[pos], data[pos + 1]]))[0]
#詞頻pos += 2count = struct.unpack('
h', bytes([data[pos], data[pos + 1]]))[0]
#儲存#到下個詞的偏移位置
pos +=ext_len
return
gtable
defscel2txt(file_name):
print('
-' * 60)
with open(file_name, 'rb
') as f:
data =f.read()
print("
詞庫名:
", byte2str(data[0x130:0x338])) #
.encode('gb18030')
print("
詞庫型別:
", byte2str(data[0x338:0x540]))
print("
描述資訊:
", byte2str(data[0x540:0xd40]))
print("
詞庫示例:
", byte2str(data[0xd40:startpy]))
getpytable(data[startpy:startchinese])
getchinese(data[startchinese:])
return
getchinese(data[startchinese:]) if
__name__ == '
__main__':
#scel所在資料夾路徑
in_path = r"c
:\sanguoyanyi"#
修改為你的詞庫檔案存放資料夾
#輸出詞典所在資料夾路徑
out_path = r"
f:\sanguoyanyi"#
轉換之後檔案存放資料夾
fin = [fname for fname in os.listdir(in_path) if fname[-5:] == "
.scel"]
for f in
fin:
try:
for word in
scel2txt(os.path.join(in_path, f)):
file_path=(os.path.join(out_path, str(f).split('
.')[0] + '
.txt'))
#儲存結果
with open(file_path,'
a+',encoding='
utf-8
')as file:
file.write(word[2] + '\n'
) os.remove(os.path.join(in_path, f))
except
exception as e:
(e)
pass
6. 排序
7. 排除語法型詞彙,代詞、冠詞、連詞等停用詞。
8. 輸出詞頻最大top20,把結果存放到檔案裡
9. 生成詞云。
中文詞頻統計與詞云生成
中文詞頻統計 追風箏的人 txt 2.從檔案讀取待分析文字。3.安裝並使用jieba進行中文分詞。pip install jieba import jieba jieba.lcut text 4.更新詞庫,加入所分析物件的專業詞彙。jieba.add word 天罡北斗陣 逐個新增 jieba.lo...
中文詞頻統計與詞云生成
中文詞頻統計 作業連線 2.從檔案讀取待分析文字。3.安裝並使用jieba進行中文分詞。pip install jieba import jieba jieba.lcut text 4.更新詞庫,加入所分析物件的專業詞彙。jieba.add word 天罡北斗陣 逐個新增 jieba.load us...
中文詞頻統計與詞云生成
2.從檔案讀取待分析文字。3.安裝並使用jieba進行中文分詞。pip install jieba import jieba jieba.lcut text 4.更新詞庫,加入所分析物件的專業詞彙。jieba.add word 天罡北斗陣 逐個新增 jieba.load userdict word ...