NLP文字預處理的一些方法

2021-09-29 04:51:01 字數 1236 閱讀 8478

寫在前面

隨著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上搜尋一下有挺多,裡面是像咳 哇 哈這些沒啥用的詞,把他們去掉對文字語義沒什麼影響,卻可以降低...