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

文本NLP噪音預處理(加拼寫檢查)

這篇具有很好參考價值的文章主要介紹了文本NLP噪音預處理(加拼寫檢查)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

最近總結(jié)修改了下預處理方法,記錄下

?首先download需要的依賴

pip install pyenchant
pip install nltk

?pyenchant 是用來檢測拼寫正確的,如果你的文本里面可能包含非正確拼寫的單詞,那就忽略它,nltk用來做分詞的。

python -m nltk.downloader punkt
python -m nltk.downloader stopwords
from nltk.corpus import stopwords
import nltk
import enchant
import re

def is_spelled_correctly(word, language='en_US'):
        spell_checker = enchant.Dict(language)
        return spell_checker.check(word)
    
def preprocess_text(text):
        text= re.sub(r'\W+', ' ',re.sub(r'[0-9]+', '', text.replace('-', '').replace('_', ' ')))
        words=nltk.word_tokenize(text)
        stop_words = set(stopwords.words('english'))
        words = [item for word in words for item in re.findall(r'[A-Z]+[a-z]*|[a-z]+', word)if is_spelled_correctly(item) and item.lower() not in stop_words]
        return ' '.join(words).lower()

if __name__ == '__main__':
    print(preprocess_text('ServiceHandlerId caedbe-85432-xssc-dsdabffdddbea An exception of some microservice TargetDownService occurred and was test #@/*-sss '))
#service handler id exception target service occurred test

?這里最后再轉(zhuǎn)小寫是因為防止ServiceHandlerId這種連續(xù)的單詞鏈接成的字符串被拼寫檢查剔除,只有保持駝峰情況下,才能用?re.findall(r'[A-Z]+[a-z]*|[a-z]+', word)?成功把他分成單獨的單詞,所以最后再處理大小寫。

改進方案1:?

之后測試的時候發(fā)現(xiàn)數(shù)據(jù)量一大,他就很慢,后面優(yōu)化了一下,速度大大提升了

from nltk.corpus import stopwords
import nltk
import enchant
import re

spell_checker = enchant.Dict(language)

def memoize(func):
        cache = {}
        def wrapper(*args):
            if args not in cache:
                cache[args] = func(*args)
            return cache[args]
        return wrapper

@memoize
def check_spelling(word):
    return spell_checker.check(word)


def preprocess_text(text):
        text= re.sub(r'\W+', ' ',re.sub(r'[0-9]+', '', text.replace('-', '').replace('_', ' ')))
        words=nltk.word_tokenize(text)
        stop_words = set(stopwords.words('english'))
        words = [item for word in words for item in re.findall(r'[A-Z]+[a-z]*|[a-z]+', word)if check_spelling(item) and item.lower() not in stop_words]
        return ' '.join(words).lower()

if __name__ == '__main__':
    print(preprocess_text('ServiceHandlerId caedbe-85432-xssc-dsdabffdddbea An exception of some microservice TargetDownService occurred and was test #@/*-sss '))
#service handler id exception target service occurred test

這里面使用了memoization 技術(shù),它是一種將函數(shù)調(diào)用和結(jié)果存儲在一個字典中的優(yōu)化技術(shù)。我這里用來緩存單詞的拼寫檢查結(jié)果。

這樣之后數(shù)據(jù)量大了之后速度依然不會太慢了。

改進方案2:

使用spellchecker 這個的速度就比enchant 快的多

pip install pyspellchecker
spell = SpellChecker()
def preprocess_text(text):
        text= re.sub(r'\W+', ' ',re.sub(r'[0-9]+', '', text.replace('-', '').replace('_', ' ')))
        words=nltk.word_tokenize(text)
        stop_words = set(stopwords.words('english'))
        words = [item for word in words for item in spell.known(re.findall(r'[A-Z]+[a-z]*|[a-z]+', word)) if  item.lower() not in stop_words]
        return ' '.join(words).lower()

區(qū)別:?

SpellChecker是一個基于編輯距離的拼寫檢查庫,它可以在內(nèi)存中加載一個詞典,并對給定的單詞列表進行快速的拼寫檢查。enchant是一個基于C語言的拼寫檢查庫,它可以使用不同的后端,如aspell, hunspell, ispell等,來檢查單詞是否存在于詞典中。SpellChecker比enchant更快,尤其是當單詞列表很大時。

新增改進

這邊用了一段時間,發(fā)現(xiàn)有些字符串是不是正確拼寫,但是確實對我之后的分類有用處,所以新加一個list文章來源地址http://www.zghlxwxcb.cn/news/detail-634010.html

spell = SpellChecker()
exceptions_words = ['jwt','json',......]
def preprocess_text(self, text):
    text = re.sub(
        r'\W+', ' ', re.sub(r'[0-9]+', '', text.replace('-', ' ').replace('_', ' ')))
    split_text = re.findall(r'[A-Z]+[a-z]*|[a-z]+', text)
    new_sentence = ' '.join(split_text)
    words = nltk.word_tokenize(new_sentence)
    stop_words = set(stopwords.words('english'))
    words = [word for word in words if (word in self.spell.known([word]) and word.lower() not in stop_words) or word.lower() in exceptions_words]
    return ' '.join(words).lower()
    
    

到了這里,關(guān)于文本NLP噪音預處理(加拼寫檢查)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 自然語言處理入門:使用Python和NLTK進行文本預處理

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

    2024年02月19日
    瀏覽(23)
  • 文本預處理——文本數(shù)據(jù)分析
  • 自然語言之文本預處理

    自然語言之文本預處理

    概念 分詞就是將連續(xù)的字序列按照一定的規(guī)范重新組合成詞序列的過程。在英文的行文中,單詞之間是以空格作為自然分界符的,而中文只是字、句和段能通過明顯的分界符來簡單劃界,唯獨詞沒有一個形式上的分界符。分詞過程就是找到這樣分界符的過程. 作用 詞作為語言

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

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

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

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

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

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

    2024年02月07日
    瀏覽(28)
  • 文本預處理技巧:去除停用詞、詞形還原、詞干提取等

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

    2024年02月05日
    瀏覽(40)
  • (2-3)文本預處理算法:去除停用詞(Stopword Removal)

    去除停用詞(Stop Words)是自然語言處理中的一個常見任務,它旨在去除文本中的常見、無實際語義的詞語,以便更準確地進行文本分析和處理。停用詞通常包括像“a”、“an”、“the”、“in”、“on”等常見的詞匯。 2.3.1 ?什么是停用詞 停用詞(Stop Words)是自然語言處理中

    2024年04月22日
    瀏覽(39)
  • C語言文本為什么不包括庫函數(shù)和預處理命令

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

    C語言的文本不包括庫函數(shù)和預處理命令 是因為庫函數(shù)和預處理命令并不是C語言本身的一部分, 它們是由 C語言標準庫 和 預處理器 提供的功能。 C語言 標準庫 是一組預定義的函數(shù)和常量, 用于提供常見的功能,如輸入輸出、字符串處理、數(shù)學計算等。 這些庫函數(shù)是由C語言

    2024年02月09日
    瀏覽(36)
  • python數(shù)據(jù)預處理

    python數(shù)據(jù)預處理

    輸出結(jié)果如下: 觀察可知,【銷量】存在一個缺失值,本例將缺失值所在行進行刪除處理 輸出結(jié)果如下: 輸出結(jié)果如下: 觀察可知,箱線圖上下邊緣存在異常值,本例通過四分位法對異常值進行處理,即:超出上邊緣的異常值讓其落在上邊緣,低于下邊緣的異常值讓其落在

    2024年02月13日
    瀏覽(30)
  • Python中對CSV數(shù)據(jù)預處理

    CSV(Comma Separated Values)是一種常用的數(shù)據(jù)格式,它是以逗號作為分隔符的純文本文件,通常用于存儲大量的數(shù)據(jù)。在數(shù)據(jù)分析和機器學習領(lǐng)域,CSV數(shù)據(jù)預處理是一個必不可少的步驟。在本篇博客中,我們將介紹Python中對CSV數(shù)據(jù)預處理的所有步驟。 在Python中,我們可以使用

    2024年02月10日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包