NLPデータクリーン

、ナレッジポイント

コードをコピーする

"" "
インストールモジュール:bs4 nltk gensim 
nltk:ハンドル英語
    1、インストール
    2、nltk.download()対応するモジュールをダウンロード

英語データ処理:1。html
    タグを削除しますexample = BeautifulSoup(df ['review'] [1000] 、 'html.parser')。get_text()
    2。句読点を削除しますexample_letter = re.sub(r '[^ a-zA-Z]'、 ''、example)
    3。単語/トークンワードに分割= example_letter.lower ().split()
    4。ストップワードを削除します。例:a an it's 
                stopwords = {} .fromkeys([line.rstrip()for line in open( './ stopwords.txt')]) 
                words_nostop = [w for w in words if w not in stopwords] 
    5.新しい文に再編成します。

単語ベクトルソリューション:
    1。ワンホットエンコーディングの
        欠点:この種のソリューションは、ストレージスペースを浪費します。単語と単語(ベクトルとベクトル)の間に相関関係がなく、コンピュータが少しでも完全に理解して処理することができないということです
    。2 特異値分解(SVD)に基づく方法
        手順:a)最初の手順は、多数の既存のドキュメントの統計を使用して単語空間行列Xを作成することです。2つの方法があります。
                1つは、ドキュメント内の各単語の出現回数をカウントすることです。ワード数をW、ドキュメント数をMとすると、Xの次元はW * Mであり、
                2番目の方法は特定の単語に対するものです。 W * WのXマトリックスを形成するために、その前後のテキスト内の他の単語の出現頻度を数えます。
              b)2番目のステップは、X行列のSVD分解を実行して固有値を取得し、必要に応じて最初のk個の固有値と対応する最初のk個の固有ベクトルをインターセプトすることです。
                次に、最初のk個の固有ベクトルによって形成される行列の次元はWです。 * k、これはすべてのWワードのk次元表現ベクトルを構成します。
        デメリット:
            1 非常に大きなワードスペースのスパース行列Xを維持する必要があり、新しいワードの出現によって変更されることがよくあります
            。2。SVD大量の計算があり、すべての単語またはドキュメントを追加または削除した後、再計算する必要があります
    。3。word2vecモデルを構築します。多数のドキュメントを通じて既存の単語のパラメータとエンコード結果を繰り返し学習し、すべての新しいドキュメントは既存のモデルを変更する必要はありません。パラメータと単語ベクトルを繰り返し計算する必要があります。
            例:私はpythonとjavaが大好きです
            a)CBOWアルゴリズム:入力:私は大好きです、ターゲット値:pythonと
                   javaCBOWアルゴリズムは入力としてコンテキストウィンドウの単語ベクトルを入力し、これらのベクトルを合計して(または平均をとって)、出力単語空間との相関分布を見つけます。
                   次に、softmax関数を使用して、出力ワード空間全体のヒット確率を取得します。ワンホットエンコーディングとターゲットワードのクロスエントロピーが損失値です。
                   入力および出力ワードベクトルの損失による勾配、勾配降下法を使用できます。このメソッドは、入力ワードベクトルと出力ワードベクトルの反復調整を取得します。

            b)Skip-Gramアルゴリズム:入力:pythonとjava、ターゲット値:
                    Skip-Gramアルゴリズムは、ターゲットの単語ベクトルを入力として使用し、出力単語空間との相関分布を見つけて
                    から、softmax関数を使用して出力ワード全体空間でのヒット確率は、ワンホットエンコーディングのコンテキストワードを使用して1つずつ計算され、
                    合計が損失値になります。損失による入力ワードベクトルと出力ワードベクトルの
                    勾配により、勾配降下法は次のようになります。入力および出力ワードベクトルの反復調整
"" "

コードをコピーする

2.中国語のデータクリーニング(ストップワードを使用)

コードをコピーする

import os 
import re 
import numpy as np 
import 
pandas as pd from bs4 import BeautifulSoup 
from sklearn.feature_extraction.text import CountVectorizer 
from sklearn.ensemble import 
RandomForestClassifier from sklearn.metrics import confusion_matrix 
from sklearn.linear_model import LogisticRegression 
import nltk 
from nltk.corpus import 
import jieba 
def clean_chineses_text(text):
    "" "
    中文数準備清洗stopwords_chineses.txt存放在博客园文件中
    :param text 
    :: return:
    " "" 
    text = BeautifulSoup(text、 'html.parser')。get_text()#去掉htmlJPG签
    text = jieba.lcut(text);
    stopwords = {} .fromkeys([line.rstrip()for line in open( './ stopwords_chineses.txt')])
    #ストップワードの読み込み(中国語)eng_stopwords = set(stopwords #重複する単語の削除
    words = [w for w wがeng_stopwordsにない場合はテキスト内]#テキスト内のストップワードを
    削除return '' .join(words)

コードをコピーする

3.英語のデータクリーニング(ストップワードを使用)

コードをコピーする

import os 
import re 
import numpy as np 
import 
pandas as pd from bs4 import BeautifulSoup 
from sklearn.feature_extraction.text import CountVectorizer 
from sklearn.ensemble import 
RandomForestClassifier from sklearn.metrics import confusion_matrix 
from sklearn.linear_model import LogisticRegression 
import nltk 
from nltk.corpus import 
import jieba 
def clean_english_text(text):
    "" "
    英文数適用清洗stopwords_english.txt存放在博客园文件中paramtext ::
    return:
    " "" 
    text = BeautifulSoup(text、 'html.parser')。get_text()#去掉htmlJPG签
    text = re.sub(r '[^ a-zA-Z]'、 ''、 テキスト)#英語の文字のみを保持する
    words = text.lower()。split()
    #all lower case stopwords = {} .fromkeys([line.rstrip()for line in open( './ stopwords_english.txt')])#ストップワードをロード(中国語)
    eng_stopwords = set(stopwords)#繰り返される単語を削除
    words = [w for w in words if w not in eng_stopwords]#テキスト内のストップワードを削除
    print(words)
    return '' .join(words)

if __name__ == ' __ main __ ':
    text = "ni hao ma、hello!my name is haha​​ '。、<br/>" 
    a = clean_english_text(text)
    print(a)

    test1 = "何してるの、私のメッセージに返信してみませんか!、ちなみに、「お母さんがあなたを探しています」
    。b= clean_chineses_text(test1)
    print(b)

コードをコピーする

 4.nltkのストップワードによるデータクリーニング

コードをコピーする

def clean_english_text_from_nltk(text):
    "" " 
    nltkストップワードを使用して英語データをクリーンアップします
    :param text 
    :: return:
    " "" 
    text = BeautifulSoup(text、 'html.parser')。get_text()#htmlタグを削除します
    text = re .sub(r '[^ a-zA-Z]'、 ''、text)句読点の単語を削除= text.lower()。split()#小文字に切り替えて
    ストップワードを分割= nltk.corpus .stopwords.words( 'english')#nltkストップワードを使用
    wordList = [word for word in words if word not in stopwords] 
    return '' .join(wordList)

コードをコピーする

おすすめ

転載: blog.csdn.net/u010451780/article/details/110957195