国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

文本預(yù)處理技巧:去除停用詞、詞形還原、詞干提取等

這篇具有很好參考價(jià)值的文章主要介紹了文本預(yù)處理技巧:去除停用詞、詞形還原、詞干提取等。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

文本預(yù)處理是自然語(yǔ)言處理中非常重要的一步,它是為了使得文本數(shù)據(jù)能夠被機(jī)器學(xué)習(xí)模型所處理而進(jìn)行的一系列操作。其中,去除停用詞、詞形還原、詞干提取等技巧是比較常用的。本文將介紹這些技巧的原理,并提供使用Python實(shí)現(xiàn)的代碼示例,幫助讀者更好地理解和實(shí)踐。

1.停用詞

停用詞指在自然語(yǔ)言文本中非常常見(jiàn)的單詞,它們通常不攜帶特定含義,例如“the”、“a”、“an”、“in”等。在文本分析中,這些詞語(yǔ)可能會(huì)干擾模型的訓(xùn)練效果,因此需要將它們從文本中移除。

在Python中,我們可以使用nltk庫(kù)來(lái)完成停用詞的去除。nltk中已經(jīng)包含了一些常用的停用詞列表,我們可以直接使用它們。

import nltk
nltk.download('stopwords')
from nltk.corpus import stopwords

stop_words = set(stopwords.words('english'))

上述代碼首先下載了nltk中的停用詞列表,然后使用了英文的停用詞列表。使用時(shí),我們可以遍歷文本中的所有單詞,判斷它是否為停用詞。如果是,就將它從文本中移除。

text = "this is an example sentence to remove stop words"
words = text.split()
filtered_words = [word for word in words if word.lower() not in stop_words]
filtered_text = " ".join(filtered_words)

print(filtered_text)

上述代碼中,我們首先將文本分成單詞,然后遍歷每個(gè)單詞。如果單詞不是停用詞,就將其加入到一個(gè)新的列表中。最后,我們將新的列表中的單詞重新拼接成一個(gè)新的文本。

除了英文停用詞之外,中文也有很多常用的停用詞。中文停用詞的特點(diǎn)是數(shù)量較多,而且由于中文詞匯結(jié)構(gòu)比英文復(fù)雜,所以中文停用詞的判斷也更加困難。

在中文文本中,一些通用的停用詞包括:“的”、“了”、“和”、“是”、“在”、“有”、“不”、“我”、“他”、“你”等。這些詞出現(xiàn)的頻率很高,但在文本分析中通常沒(méi)有什么意義。

常見(jiàn)的中文停用詞表可以在網(wǎng)上下載,例如中文停用詞表:https://github.com/goto456/stopwords。

在Python中,我們可以將中文停用詞存儲(chǔ)在一個(gè)列表中,然后在分詞后對(duì)文本進(jìn)行處理,去掉其中的停用詞。以下是一個(gè)使用中文停用詞的代碼示例:

import jieba

# 加載中文停用詞表
stopwords_path = 'path/to/stopwords.txt'
with open(stopwords_path, 'r', encoding='utf-8') as f:
    stopwords = [line.strip() for line in f.readlines()]

# 分詞并去除停用詞
text = '今天天氣真好,適合出去玩。'
words = jieba.cut(text)
clean_words = [word for word in words if word not in stopwords]

print(clean_words)

輸出結(jié)果為:

['今天', '天氣', '真好', '適合', '出去', '玩']

在這個(gè)示例中,我們使用jieba庫(kù)對(duì)文本進(jìn)行分詞,并去掉了其中的停用詞。

2.詞形還原

詞形還原 (Lemmatization) 是指將單詞轉(zhuǎn)換為它們的原始形式,這個(gè)原始形式稱為詞元 (Lemma) 或基本形式 (Base form)。與詞干提取不同,詞形還原會(huì)考慮單詞的上下文語(yǔ)境和詞性,因此得到的結(jié)果更加準(zhǔn)確。

詞形還原的處理步驟包括:

  1. 利用分詞技術(shù)將文本轉(zhuǎn)換為單詞列表。
  2. 利用詞性標(biāo)注技術(shù)為每個(gè)單詞標(biāo)注詞性。
  3. 根據(jù)每個(gè)單詞的詞性和上下文語(yǔ)境,將單詞還原為它們的原始形式。

在自然語(yǔ)言處理中,常用的詞形還原算法有基于規(guī)則的和基于統(tǒng)計(jì)的兩種。其中基于規(guī)則的算法使用預(yù)定義的規(guī)則將單詞還原為它們的原始形式,而基于統(tǒng)計(jì)的算法則根據(jù)語(yǔ)料庫(kù)中單詞的出現(xiàn)頻率和上下文語(yǔ)境來(lái)推斷單詞的原始形式。

下面是一個(gè)使用Python的nltk庫(kù)進(jìn)行詞形還原的例子:

import nltk
from nltk.stem import WordNetLemmatizer

nltk.download('wordnet')

wordnet_lemmatizer = WordNetLemmatizer()
text = "My cat is walking on the carpet"
tokens = nltk.word_tokenize(text)
result = []
for token in tokens:
    result.append(wordnet_lemmatizer.lemmatize(token, pos='v'))
print(result)

在上述代碼中,我們首先使用nltk庫(kù)的word_tokenize()函數(shù)將文本轉(zhuǎn)換為單詞列表。然后,我們創(chuàng)建了一個(gè)WordNetLemmatizer對(duì)象,并使用它的lemmatize()方法將單詞還原為它們的原始形式。在這個(gè)例子中,我們將單詞還原為它們的動(dòng)詞原形。輸出結(jié)果為:[‘My’, ‘cat’, ‘be’, ‘walk’, ‘on’, ‘the’, ‘carpet’]。

在實(shí)際應(yīng)用中,詞形還原通常與停用詞去除、詞干提取等技術(shù)結(jié)合使用,以提高文本預(yù)處理的效果。

在中文中,詞形變化相對(duì)英文單詞較少,但是詞語(yǔ)之間的組合方式比較靈活,同一個(gè)詞可能會(huì)有多種不同的形態(tài)。中文的詞形還原與英文略有不同,它通常指的是將詞語(yǔ)的不同形態(tài)轉(zhuǎn)換為它的原始形態(tài)。例如,將“吃飯了”和“吃了飯”都還原為“吃飯”。

中文詞形還原的實(shí)現(xiàn)通常需要借助中文分詞技術(shù)和詞性標(biāo)注技術(shù)。中文分詞是將一段文本分解成詞語(yǔ)的過(guò)程,而詞性標(biāo)注是對(duì)每個(gè)詞語(yǔ)進(jìn)行詞性標(biāo)記的過(guò)程。通過(guò)這兩個(gè)步驟,我們可以識(shí)別出每個(gè)詞語(yǔ)的原始形態(tài),并將其還原。

下面是一個(gè)使用中文分詞庫(kù)jieba和詞性標(biāo)注庫(kù)pynlpir進(jìn)行中文詞形還原的示例代碼:

import jieba
import pynlpir

# 加載停用詞表
stopwords = []
with open('stopwords.txt', 'r', encoding='utf-8') as f:
    for line in f:
        stopwords.append(line.strip())

# 初始化分詞庫(kù)和詞性標(biāo)注庫(kù)
jieba.initialize()
pynlpir.open()

def lemmatize_chinese(text):
    """
    中文詞形還原函數(shù),輸入為一段中文文本,輸出為還原后的文本。
    """
    words = jieba.cut(text)
    lemmatized_words = []
    for word in words:
        if word not in stopwords:  # 去除停用詞
            pos = pynlpir.segment(word)[0][1]  # 獲取詞性
            if pos.startswith('n'):  # 名詞
                lemmatized_words.append(pynlpir.noun_lemmatize(word))
            elif pos.startswith('v'):  # 動(dòng)詞
                lemmatized_words.append(pynlpir.verb_lemmatize(word))
            else:
                lemmatized_words.append(word)
    return ''.join(lemmatized_words)

# 測(cè)試
text = "今天天氣不錯(cuò),適合去散步。"
lemmatized_text = lemmatize_chinese(text)
print(lemmatized_text)

在上面的代碼中,我們使用了jieba分詞庫(kù)對(duì)中文文本進(jìn)行分詞,然后使用pynlpir詞性標(biāo)注庫(kù)獲取每個(gè)詞語(yǔ)的詞性。最后,根據(jù)詞性使用pynlpir的名詞還原和動(dòng)詞還原方法進(jìn)行詞形還原。需要注意的是,在中文中,名詞和動(dòng)詞的還原方法通常是不同的。

3.詞干提取

詞干提?。╯temming)是另一種文本預(yù)處理技術(shù),它試圖從單詞中去除詞綴,使得詞干可以被識(shí)別為同一單詞的變體。它的目的是將一個(gè)單詞的各種變體歸并為同一個(gè)詞干,這樣可以減少單詞形態(tài)變化帶來(lái)的干擾,同時(shí)縮小特征空間的規(guī)模。

與詞形還原不同,詞干提取僅僅是將單詞的后綴去掉,而不考慮其上下文和語(yǔ)法,因此可能會(huì)產(chǎn)生一些無(wú)意義的詞干。

對(duì)于英文單詞,Porter stemming算法是最常用的詞干提取算法。

import nltk
from nltk.stem import PorterStemmer

stemmer = PorterStemmer()

word_list = ['running', 'runner', 'ran', 'runs']

for word in word_list:
    print(f"Stemming '{word}' results in '{stemmer.stem(word)}'")

輸出結(jié)果如下所示:

Stemming 'running' results in 'run'
Stemming 'runner' results in 'runner'
Stemming 'ran' results in 'ran'
Stemming 'runs' results in 'run'

可以看到,PorterStemmer將所有單詞都轉(zhuǎn)換為它們的詞干形式,但這并不總是符合語(yǔ)法規(guī)則,因?yàn)樗皇菓?yīng)用了一些簡(jiǎn)單的規(guī)則和規(guī)律。在某些情況下,它可能會(huì)將不同的單詞轉(zhuǎn)換為相同的詞干,或?qū)⑾嗤膯卧~轉(zhuǎn)換為不同的詞干。因此,在使用詞干提取時(shí),需要根據(jù)特定的應(yīng)用場(chǎng)景和數(shù)據(jù)集來(lái)決定是否使用它。

對(duì)于中文,中文的分詞就可以看作是詞干提取的過(guò)程。中文分詞將句子劃分為詞語(yǔ)的序列,這些詞語(yǔ)是語(yǔ)言中最小的、能夠獨(dú)立運(yùn)用的語(yǔ)言單位。通常使用一些開(kāi)源的中文分詞工具,如jieba分詞、中科院的ictclas分詞器等。

以下是使用Python中的jieba分詞庫(kù)進(jìn)行中文分詞的示例代碼:

import jieba

text = "我愛(ài)自然語(yǔ)言處理技術(shù)"
seg_list = jieba.cut(text, cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))  # 輸出分詞結(jié)果

輸出結(jié)果如下:

Default Mode: 我/ 愛(ài)/ 自然語(yǔ)言處理/ 技術(shù)

除了中文分詞外,一些專業(yè)領(lǐng)域中,還可以使用專門的領(lǐng)域詞干提取算法。例如,生物醫(yī)學(xué)領(lǐng)域中的BioStem算法可以用于提取生物詞匯的詞干。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-755503.html

到了這里,關(guān)于文本預(yù)處理技巧:去除停用詞、詞形還原、詞干提取等的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 1 — NLP 的文本預(yù)處理技術(shù)

    1 — NLP 的文本預(yù)處理技術(shù)

    ????????在本文中,我們將討論以下主題:1 為什么文本預(yù)處理很重要?2? 文本預(yù)處理技術(shù)。這個(gè)文對(duì)預(yù)處理做一個(gè)完整化、程序化處理,這對(duì)NLP處理項(xiàng)目中有很大參考性。

    2024年02月07日
    瀏覽(22)
  • 文本NLP噪音預(yù)處理(加拼寫檢查)

    最近總結(jié)修改了下預(yù)處理方法,記錄下 ?首先download需要的依賴 ?pyenchant 是用來(lái)檢測(cè)拼寫正確的,如果你的文本里面可能包含非正確拼寫的單詞,那就忽略它, nltk 用來(lái)做分詞的。 ?這里最后再轉(zhuǎn)小寫是因?yàn)榉乐?ServiceHandlerId 這種連續(xù)的單詞鏈接成的字符串被拼寫檢查剔除,

    2024年02月14日
    瀏覽(21)
  • 【數(shù)據(jù)挖掘 | 數(shù)據(jù)預(yù)處理】缺失值處理 & 重復(fù)值處理 & 文本處理 確定不來(lái)看看?

    【數(shù)據(jù)挖掘 | 數(shù)據(jù)預(yù)處理】缺失值處理 & 重復(fù)值處理 & 文本處理 確定不來(lái)看看?

    ???♂? 個(gè)人主頁(yè): @AI_magician ??主頁(yè)地址: 作者簡(jiǎn)介:CSDN內(nèi)容合伙人,全棧領(lǐng)域優(yōu)質(zhì)創(chuàng)作者。 ?????景愿:旨在于能和更多的熱愛(ài)計(jì)算機(jī)的伙伴一起成長(zhǎng)!!????? ???♂?聲明:本人目前大學(xué)就讀于大二,研究興趣方向人工智能硬件(雖然硬件還沒(méi)開(kāi)始玩,但一直

    2024年02月07日
    瀏覽(28)
  • 自然語(yǔ)言處理入門:使用Python和NLTK進(jìn)行文本預(yù)處理

    文章標(biāo)題:自然語(yǔ)言處理入門:使用Python和NLTK進(jìn)行文本預(yù)處理 簡(jiǎn)介 自然語(yǔ)言處理(NLP)是人工智能領(lǐng)域的一個(gè)重要分支,它致力于使計(jì)算機(jī)能夠理解、分析和生成人類語(yǔ)言。本文將介紹如何使用Python編程語(yǔ)言和NLTK(Natural Language Toolkit)庫(kù)進(jìn)行文本預(yù)處理,為后續(xù)的文本分析

    2024年02月19日
    瀏覽(22)
  • 計(jì)算機(jī)視覺(jué)任務(wù)圖像預(yù)處理之去除圖像中的背景區(qū)域-------使用連通域分析算法(包含完整代碼)

    通過(guò)連通域分析算法能夠找到最大的連通域,即圖片的主體部分,然后保存該連通域的最小外接矩陣,即可去除掉無(wú)關(guān)的背景區(qū)域 更多圖像預(yù)處理操作工具集包含在這個(gè)github倉(cāng)庫(kù)中

    2024年02月06日
    瀏覽(27)
  • 自然語(yǔ)言處理NLP:文本預(yù)處理Text Pre-Processing

    自然語(yǔ)言處理NLP:文本預(yù)處理Text Pre-Processing

    大家好,自然語(yǔ)言處理(NLP)是計(jì)算機(jī)科學(xué)領(lǐng)域與人工智能領(lǐng)域中的一個(gè)重要方向,其研究能實(shí)現(xiàn)人與計(jì)算機(jī)之間用自然語(yǔ)言進(jìn)行有效通信的各種理論和方法。本文將介紹文本預(yù)處理的本質(zhì)、原理、應(yīng)用等內(nèi)容,助力自然語(yǔ)言處理和模型的生成使用。 文本預(yù)處理是將原始文本數(shù)

    2024年04月26日
    瀏覽(91)
  • 【文本到上下文 #2】:NLP 的數(shù)據(jù)預(yù)處理步驟

    【文本到上下文 #2】:NLP 的數(shù)據(jù)預(yù)處理步驟

    ????????歡迎閱讀此文,NLP 愛(ài)好者!當(dāng)我們繼續(xù)探索自然語(yǔ)言處理 (NLP) 的廣闊前景時(shí),我們已經(jīng)在最初的博客中探討了它的歷史、應(yīng)用和挑戰(zhàn)。今天,我們更深入地探討 NLP 的核心——數(shù)據(jù)預(yù)處理的復(fù)雜世界。 ????????這篇文章是我們的“完整 NLP 指南:文本到上下文

    2024年01月18日
    瀏覽(33)
  • C語(yǔ)言文本為什么不包括庫(kù)函數(shù)和預(yù)處理命令

    C語(yǔ)言文本為什么不包括庫(kù)函數(shù)和預(yù)處理命令

    C語(yǔ)言的文本不包括庫(kù)函數(shù)和預(yù)處理命令 是因?yàn)閹?kù)函數(shù)和預(yù)處理命令并不是C語(yǔ)言本身的一部分, 它們是由 C語(yǔ)言標(biāo)準(zhǔn)庫(kù) 和 預(yù)處理器 提供的功能。 C語(yǔ)言 標(biāo)準(zhǔn)庫(kù) 是一組預(yù)定義的函數(shù)和常量, 用于提供常見(jiàn)的功能,如輸入輸出、字符串處理、數(shù)學(xué)計(jì)算等。 這些庫(kù)函數(shù)是由C語(yǔ)言

    2024年02月09日
    瀏覽(36)
  • 第五篇【傳奇開(kāi)心果系列】Python文本和語(yǔ)音相互轉(zhuǎn)換庫(kù)技術(shù)點(diǎn)案例示例:詳細(xì)解讀pyttsx3的`preprocess_text`函數(shù)文本預(yù)處理。

    第五篇【傳奇開(kāi)心果系列】Python文本和語(yǔ)音相互轉(zhuǎn)換庫(kù)技術(shù)點(diǎn)案例示例:詳細(xì)解讀pyttsx3的`preprocess_text`函數(shù)文本預(yù)處理。

    pyttsx3在文本轉(zhuǎn)換語(yǔ)音之前,首先要開(kāi)展系列步驟的文本預(yù)處理工作。 這些預(yù)處理步驟可以在使用 pyttsx3 之前應(yīng)用于文本,以提高轉(zhuǎn)換結(jié)果的質(zhì)量和可讀性。預(yù)處理后的文本更干凈、準(zhǔn)確,可以更好地用于語(yǔ)音轉(zhuǎn)換。pyttsx3主要使用 preprocess_text 函數(shù)開(kāi)展文本預(yù)處理。 下面是一

    2024年02月22日
    瀏覽(25)
  • 文本分析-使用jieba庫(kù)進(jìn)行中文分詞和去除停用詞(附案例實(shí)戰(zhàn))

    文本分析-使用jieba庫(kù)進(jìn)行中文分詞和去除停用詞(附案例實(shí)戰(zhàn))

    ? ???♂? 個(gè)人主頁(yè):@艾派森的個(gè)人主頁(yè) ???作者簡(jiǎn)介:Python學(xué)習(xí)者 ?? 希望大家多多支持,我們一起進(jìn)步!?? 如果文章對(duì)你有幫助的話, 歡迎評(píng)論 ??點(diǎn)贊???? 收藏 ??加關(guān)注+ ????????中文分詞是將中文文本切分成一系列有意義的詞語(yǔ)的過(guò)程。中文分詞可以用于

    2024年02月11日
    瀏覽(42)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包