寫在前面
隨著bert等技術的興起,在做文字方面比賽時,對於預處理這一塊像中文分詞,停用詞過濾,詞形還原,詞幹化,標點符號處理等變的不再這麼重要。當然也可以從另乙個角度來看,這些對於文字的預處理方法相當於減少輸入的雜訊,是可以讓神經網路更具有魯棒性的。所以以下內容可以作為乙個知識儲備在這裡,在工作中是否需要用到它們全憑自己判斷。
預處理方法
### 用於詞形還原
from nltk import word_tokenize, pos_tag
from nltk.corpus import wordnet
from nltk.stem import wordnetlemmatizer
# 獲取單詞的詞性
def get_wordnet_pos(tag):
if tag.startswith('j'):
return wordnet.adj
elif tag.startswith('v'):
return wordnet.verb
elif tag.startswith('n'):
return wordnet.noun
elif tag.startswith('r'):
return wordnet.adv
else:
return none
sentence = 'football is a family of team sports that involve, to varying degrees, kicking a ball to score a goal.'
tokens = word_tokenize(sentence) # 分詞
tagged_sent = pos_tag(tokens) # 獲取單詞詞性
wnl = wordnetlemmatizer()
lemmas_sent =
for tag in tagged_sent:
wordnet_pos = get_wordnet_pos(tag[1]) or wordnet.noun
print(lemmas_sent)
輸出結果為[『football』, 『be』, 『a』, 『family』, 『of』, 『team』, 『sport』, 『that』, 『involve』, 『,』, 『to』, 『vary』, 『degree』, 『,』, 『kick』, 『a』, 『ball』, 『to』, 『score』, 『a』, 『goal』, 『.』] nlp中文字處理的一些常用方法
從sentence str 中找到會重複出現的多位的keyword的起始位置與結束位置的索引def get key idxs sentence,keyword k len len keyword res for i in range len sentence k len 1 if sentence ...
NLP 中文文字預處理
jieba是乙個專門處理中文分詞的分詞庫,但其實功能比單純的分詞強大許多。中文不同於英文可以通過空格分開每個有意義的詞,對於中文需要乙個工具將完整的文字分割成更細緻的詞語,類似於英文分詞中使用的nltk工具,中文中需要使用jieba。pip install jieba 4.詞性標註 5.tokeni...
NLP系列 文字預處理1
對一篇文章,一般的做法是先進行分詞,後續是對詞語進行語義特徵提取與建模,不過也有人是用句子或者單字粒度,個人實驗的結果是字元級比分詞好,句子級沒有試過。分詞後是去除停用詞以及標點符號,停用詞表到github上搜尋一下有挺多,裡面是像咳 哇 哈這些沒啥用的詞,把他們去掉對文字語義沒什麼影響,卻可以降低...