今天在圖書館查了不少資料,感覺沒什麼特別好的學習途徑。
主要通過博客,李航的《統計學習方法》,相關比賽代碼來學習。
首先還是介紹幾個名詞,一個新領域總是有很多新名詞。
-
Tokenization:將文本轉化爲tokens的過程
-
Tokens:在文本里的展示的單詞或實體
-
Text object:一個句子、短語、單詞或文章
文本分析也好,平時做的數據挖掘也好,開始都是需要數據預處理。
文本分析點數據預處理的過程主要包括以下三個部分:
-
噪聲移除
-
詞彙規範化
-
對象標準化
這裏我們首先介紹噪聲移除。
所謂噪聲移除就是把對我們來說沒有用的冗餘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]’]
各部分代表的意思。