文本分析入門(一)

今天在圖書館查了不少資料,感覺沒什麼特別好的學習途徑。
主要通過博客,李航的《統計學習方法》,相關比賽代碼來學習。

首先還是介紹幾個名詞,一個新領域總是有很多新名詞。

  1. Tokenization:將文本轉化爲tokens的過程

  2. Tokens:在文本里的展示的單詞或實體

  3. Text object:一個句子、短語、單詞或文章

文本分析也好,平時做的數據挖掘也好,開始都是需要數據預處理。

文本分析點數據預處理的過程主要包括以下三個部分:

  1. 噪聲移除

  2. 詞彙規範化

  3. 對象標準化

這裏我們首先介紹噪聲移除。
所謂噪聲移除就是把對我們來說沒有用的冗餘tokens去掉,例如語氣詞。
PS:在情感分析中,語氣詞、感嘆號是應該保留的,因爲他們對錶示語氣程度、感情色彩有一定的貢獻和意義
比較常用的方法是通過先設置好噪音詞典,然後遍歷一下文本,去除那些被詞典標註爲噪音的tokens。

寫一個噪聲移除的函數

#先準備一個噪音詞典,記錄了你要除掉的tokens。
noise_list=['I','you','me','he','her','they','them','a','an','the','...']

def remove_noise(text):
    words=re.split('[, ]',text)
    remove_noise_words=[word for word in words if word not in noise_list]
    remove_noise_text=' '.join(remove_noise_words)
    return remove_noise_text


示例

結果很明確。

要注意的是split和re.split的區別。
re.split可以用多個分隔符分割文本。

split適合於單個分隔符,當需要使用多個分隔的時候,可以逐次使用。
re.split適合多個分隔符,使用起來有兩種方式
比如我代碼中使用的,words=re.split(’[, ]’,text)
在這裏,split的第一個參數,也就是傳入分隔符的。
我傳入了一個列表,裏面有兩個元素,逗號和空格。
注意這個列表裏每個元素之間沒有空格和逗號,因此有空格的話就說明要通過空格分隔。
爲了清楚一點,再舉一個例子。
re.split("[;,?]")
這個則是實現分號,逗號,問號三個分隔符。

還可以使用正則表達式處理一些特定模式的噪音,
函數:

def remove_regex(input_text,regex_pattern):
    urls=re.finditer(regex_pattern,input_text)
    for i in urls:
        input_text=re.sub(i.group().strip(),'',input_text)
    return input_text

調用:

regex_pattern=['#[\w]*','#[\w]','#[\w][\w]']

for regex_patterns in regex_pattern:
    result=remove_regex("i #dont like sing jump and rap",regex_patterns)
    print(result)

結果:

在這裏插入圖片描述

通過結果大家應該可以看出
regex_pattern=[’#[\w]*’,’#[\w]’,’#[\w][\w]’]
各部分代表的意思。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章