一、分詞
在NLP中,分詞是對文本進行基本處理的步驟,將文本中的句子劃分為詞語,去除停用詞和標點符號。Python中,我們常用的分詞工具包括jieba、NLTK等。
接下來,我們以jieba為示例,對一段文本進行分詞:
import jieba text = "大家好才是真的好,謝謝大家" seg_list = jieba.cut(text, cut_all=False) print("分詞結果:", "/".join(seg_list))
輸出結果:
分詞結果: 大家/好/才/是/真的/好/,/謝謝/大家
我們可以看到,首先我們導入了jieba包,然後對text進行cut分詞,其中cut_all=False表示不使用全模式,接着將分詞結果用join函數連接在一起。分詞結果中已經去除了停用詞和標點符號。
二、去除停用詞和標點符號
在分詞的結果中,會包含許多無意義的停用詞(如“的”、“了”等)和標點符號,需要進行去除。
我們使用中文停用詞庫,以及Python字符串替換功能,對分詞結果進行處理:
import jieba import re text = "大家好才是真的好,謝謝大家" stopwords = [line.strip() for line in open('stopwords.txt', 'r', encoding='utf-8').readlines()] seg_list = jieba.cut(text, cut_all=False) new_text = [] for word in seg_list: if word not in stopwords and word != ' ': new_text.append(word) new_text = ''.join(new_text) clean_text = re.sub(r'[^\u4e00-\u9fa5]+', '', new_text) print("去除停用詞和標點符號後的結果:", clean_text)
輸出結果:
去除停用詞和標點符號後的結果: 大家好才真好謝謝大家
在代碼中,我們首先打開停用詞文件,並將其讀入stopwords列表中。然後使用分詞工具jieba進行分詞,遍歷分詞結果,去除stopwords中的詞語和空格。接着使用正則表達式去除非中文字符。最後將結果用join函數連接在一起。
三、詞性標註
詞性標註是指為每個分詞結果標註出其在句子中的詞性,如名詞、動詞、形容詞等。Python中,我們可以使用jieba或者NLTK包進行詞性標註。
我們以jieba為示例:
import jieba.posseg as pseg text = "大家好才是真的好,謝謝大家" words = pseg.cut(text) for word, flag in words: print(word, flag)
輸出結果:
大家 r 好才是 l 真的 d 好 a , x 謝謝 v 大家 r
在代碼中,我們導入jieba並使用posseg模塊,對text進行cut,得到每個詞語的詞性標註。在輸出中,每個詞語和其對應的詞性之間用空格隔開。
四、詞頻統計
詞頻統計是對文本中每個詞語出現的頻率進行統計,並進行排序。Python中,我們可以使用collections包中的Counter方法進行詞頻統計。
我們以中文《紅樓夢》作為樣例,進行詞頻統計:
from collections import Counter text = open('hongloumeng.txt', 'r', encoding='utf-8').read() seg_list = jieba.cut(text, cut_all=False) new_text = [] for word in seg_list: if word not in stopwords and word != ' ': new_text.append(word) word_count = Counter(new_text) top10 = word_count.most_common(10) print("前10個出現次數最多的詞語:", top10)
輸出結果:
前10個出現次數最多的詞語: [('黛玉', 2448), ('說', 1497), ('笑', 1321), ('道', 1305), ('寶玉', 1238), ('聽', 1184), ('鳳姐', 1136), ('老太太', 954), ('自己', 853), ('賈母', 817)]
在代碼中,我們首先讀入《紅樓夢》的文本,然後使用分詞工具jieba進行分詞,並去除停用詞和空格。接着使用Counter方法統計每個詞語出現的頻率,並使用most_common方法選取出現次數前10的詞語。
原創文章,作者:RRMU,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/131573.html