Text Preprocessing Method Using ML - Social media Example

Why we need to preprocess text?

在現實世界中取得的數據非常凌亂,因此在使用機器學習處理NLP問題前,首先需要將數據進行適當處理,才能過濾有效資料。

然而在文字預處理同時,也會做feature engineering,將一些重要的特徵保留下來,以便後續模型的訓練
 

General Text Preprocess

根據數據取得的平臺,處理的方式會有所不同。比如:twitter的tweets 會有@mention,#hashtag, URL…etc;Instagram有 #hashtag。另外,現今emoji、縮寫語和網路用語十分發達,這些文字與表情符號都需要經過一定程度的處理才能用來訓練模型。

基本上,一般文字預處理有以下幾個步驟:

  • remove punctuations/ emoji
  • remove numbers
  • lowercase
  • remove stopwords
  • stemming/ lemmatization
  • remove frequent and infrequent words
  • tokenization

以上是很簡略的敘述文字預處理,但就像我先前提過的不同的raw text會需要不同的處理方式才能更大地發揮數據的價值。在此以sentiment analysis - based on social media為例記錄下自己遇到的問題:

Emoji

😊😭😤😂emoji是一個重要的情感判定因素,因此remove all emojis 不是一個好方法,可以運用一些python package將其轉換為emoji description。(BTW 這是我在社群媒體上最常用的emoji: 😂,又哭又笑地是要逼死做sentiment analysis的人嗎哈哈哈)

Punctuations

在social media上,常有"what???" or "oh my god!!!"類似這種consequent punctuations出現的時候。通常會給人一種語氣加重/強調/驚訝的情感,因此remove all punctuations may not seem a good way. 另一個可能發生的問題是: hyphenated words. 例如: well-known, one-year-old,若將中間符號(-)移除,意義可能改變。在處理標點符號問題,因取決於文本分析問題的目的。

縮寫語/網路用語

以中文"爺青回"為例,進行分詞後變成:爺/青/回,三字單看無特殊意義,但實際上三字合在一起時,意思為:爺的青春回來了。以英文為例,像是"OMG","SOTY"也是一樣的。在這一類處理上,我目前想到的是透過一個dictionary來記錄所有縮寫語/網路用語,並透過mapping將其替換為日常用語。

Stop words/高頻詞&低頻詞

在一個句子中經常出現但並沒有帶出太多意義的詞,我們稱之為Stop words。在英文中常見的停用詞像是:a, is, the, not…etc. 在情感分析案例上,移除所有停用詞會是一個災難。舉個例子,“I am not happy to be with you"原意是負面的,但在移除全部停用詞後,整句只留下正面的"happy”。因此要視所解決的問題,和EDA之後了解所有Data,才決定停用詞的增減或去留。

而在高頻和低頻詞也是一樣的,建議將高頻和低頻詞移除,才能過濾出真實有效的數據。這裡可以使用TF-IDF model來做計算。

Conclusion

Text preprocessing(NLP in machine learning) 是一個需要花時間FEATURE ENGINEERING/FINE-TUNING的領域,如前言所提,文字真的太雜了XD。

*後記:這2年Deep learning興起,許多大規模的pre-trained models 像是 BERT, GPT-3在NLP上取得了相當大的進展。但我的hands-on experience相對較少,還得趕緊練功去!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值