、ナレッジポイント
"" " インストールモジュール: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)