Kaggle의 데이터에서 bag of words를 만들어 보았습니다 (2/3)
처음에
이 기사는 Kaggle의 데이터 "Bag of Words Meets Bags of Popcorn"의 데이터로 bag of words를 만들고 Random Forest에서 예측할 때까지를 설명하는 초보자를 위한 기사입니다.
영어 기사에서 좋은 것을 찾았으므로, 영어가 서투른 분에게 일본 번역+초보자용으로 보충한 것이 되고 있습니다.
또한 투고 자체가 처음이므로 조언을 주시면 감사하겠습니다.
Kaggle의 데이터에서 bag of words를 만들어 보았습니다 (1/3)
Kaggle의 데이터에서 bag of words를 만들어 보았습니다 (3/3)
환경
- Mac OS X 10.12.5
이 장에서 할 일
bag of words 만들기
마지막으로 정리한 텍스트 데이터를 단어 단위로 설정합니다.
words = lower_case.split()
print(words)
이런 느낌입니다.
스톱워드 삭제
스톱워드란?
어쨌든, 너무 많이 사용되는 단어 때문에 텍스트 데이터를 다룰 때 잘 제거되는 단어입니다.
「a」 「the」 「an」이라든지가 이미지하기 쉽다고 생각합니다.
이 스톱워드등입니다만, 스스로 설정할 수도 있습니다만, 이번은 패키지를 사용합니다.
패키지 설치
이제 사용할 수 있습니다.
import nltk
nltk.download()
from nltk.corpus import stopwords
파일은 다운로드 할 수 있었지만 stopwords 파일이 없다고 말한 사람
import nltk
nltk.download('stopwords')
시도에 stopwords를 살펴 보겠습니다.
stopwords.words("english")
그러면 문장에서 정지 단어를 제거합니다.
words = [w for w in words if not w in stopwords.words("english")]
print (words)
이전 작업을 함수로 만듭니다.
def review_to_words( raw_review ):
# 1. HTMLのタグ消し
review_text = BeautifulSoup(raw_review).get_text()
#
# 2. 文字以外(?,!等)の除去
letters_only = re.sub("[^a-zA-Z]", " ", review_text)
#
# 3. 全ての文字を小文字に変更
words = letters_only.lower().split()
#
# 4. ストップワードのリスト作成
stops = set(stopwords.words("english"))
#
# 5. ストップワードの除去
meaningful_words = [w for w in words if not w in stops]
#
# 6. 文にして結果を返す
return( " ".join( meaningful_words ))
이제 확인합니다.
clean_review = review_to_words( train["review"][0] )
print(clean_review)
그런 다음 리뷰의 데이터 수를 확인합니다.
여기에 25000개의 리뷰가 있음을 확인할 수 있습니다.
num_reviews = train["review"].size
num_reviews
이제 모든 리뷰를 청소합니다.
clean_train_reviews = [] #初期化
for i in range( 0, num_reviews ):
clean_train_reviews.append( review_to_words( train["review"][i] ) )
이런 느낌이 되고 있습니다.
그런 다음 scikit-learn을 사용하여 단어 가방을 만듭니다.
print ("Creating the bag of words...\n")
from sklearn.feature_extraction.text import CountVectorizer
# 初期化
vectorizer = CountVectorizer(analyzer = "word", \
tokenizer = None, \
preprocessor = None, \
stop_words = None, \
max_features = 5000) #ここで特徴量の数を5000に設定
그런 다음 피쳐 벡터를 만듭니다. (clean_train_reviews는 위에서 처리한 리뷰 데이터)
train_data_features = vectorizer.fit_transform(clean_train_reviews)
#ここで、250000X5000のデータセットが準備できたことが確認できます。
print (train_data_features.shape)
이제 어떤 단어가 특징량으로 선택되었는지 확인할 수 있습니다.
vocab = vectorizer.get_feature_names()
print (vocab)
마지막으로 csv로 저장합니다.
df = pd.DataFrame(train_data_features)
df.columns = vocab
df.to_csv("train_bag_of_words.csv")
참고문헌
Part 1: For Beginners - Bag of Words
Reference
이 문제에 관하여(Kaggle의 데이터에서 bag of words를 만들어 보았습니다 (2/3)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nana1212/items/1eaadca32349a1314cb4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
마지막으로 정리한 텍스트 데이터를 단어 단위로 설정합니다.
words = lower_case.split()
print(words)
이런 느낌입니다.
스톱워드 삭제
스톱워드란?
어쨌든, 너무 많이 사용되는 단어 때문에 텍스트 데이터를 다룰 때 잘 제거되는 단어입니다.
「a」 「the」 「an」이라든지가 이미지하기 쉽다고 생각합니다.
이 스톱워드등입니다만, 스스로 설정할 수도 있습니다만, 이번은 패키지를 사용합니다.
패키지 설치
이제 사용할 수 있습니다.
import nltk
nltk.download()
from nltk.corpus import stopwords
파일은 다운로드 할 수 있었지만 stopwords 파일이 없다고 말한 사람
import nltk
nltk.download('stopwords')
시도에 stopwords를 살펴 보겠습니다.
stopwords.words("english")
그러면 문장에서 정지 단어를 제거합니다.
words = [w for w in words if not w in stopwords.words("english")]
print (words)
이전 작업을 함수로 만듭니다.
def review_to_words( raw_review ):
# 1. HTMLのタグ消し
review_text = BeautifulSoup(raw_review).get_text()
#
# 2. 文字以外(?,!等)の除去
letters_only = re.sub("[^a-zA-Z]", " ", review_text)
#
# 3. 全ての文字を小文字に変更
words = letters_only.lower().split()
#
# 4. ストップワードのリスト作成
stops = set(stopwords.words("english"))
#
# 5. ストップワードの除去
meaningful_words = [w for w in words if not w in stops]
#
# 6. 文にして結果を返す
return( " ".join( meaningful_words ))
이제 확인합니다.
clean_review = review_to_words( train["review"][0] )
print(clean_review)
그런 다음 리뷰의 데이터 수를 확인합니다.
여기에 25000개의 리뷰가 있음을 확인할 수 있습니다.
num_reviews = train["review"].size
num_reviews
이제 모든 리뷰를 청소합니다.
clean_train_reviews = [] #初期化
for i in range( 0, num_reviews ):
clean_train_reviews.append( review_to_words( train["review"][i] ) )
이런 느낌이 되고 있습니다.
그런 다음 scikit-learn을 사용하여 단어 가방을 만듭니다.
print ("Creating the bag of words...\n")
from sklearn.feature_extraction.text import CountVectorizer
# 初期化
vectorizer = CountVectorizer(analyzer = "word", \
tokenizer = None, \
preprocessor = None, \
stop_words = None, \
max_features = 5000) #ここで特徴量の数を5000に設定
그런 다음 피쳐 벡터를 만듭니다. (clean_train_reviews는 위에서 처리한 리뷰 데이터)
train_data_features = vectorizer.fit_transform(clean_train_reviews)
#ここで、250000X5000のデータセットが準備できたことが確認できます。
print (train_data_features.shape)
이제 어떤 단어가 특징량으로 선택되었는지 확인할 수 있습니다.
vocab = vectorizer.get_feature_names()
print (vocab)
마지막으로 csv로 저장합니다.
df = pd.DataFrame(train_data_features)
df.columns = vocab
df.to_csv("train_bag_of_words.csv")
참고문헌
Part 1: For Beginners - Bag of Words
Reference
이 문제에 관하여(Kaggle의 데이터에서 bag of words를 만들어 보았습니다 (2/3)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nana1212/items/1eaadca32349a1314cb4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import nltk
nltk.download()
from nltk.corpus import stopwords
import nltk
nltk.download('stopwords')
stopwords.words("english")
words = [w for w in words if not w in stopwords.words("english")]
print (words)
def review_to_words( raw_review ):
# 1. HTMLのタグ消し
review_text = BeautifulSoup(raw_review).get_text()
#
# 2. 文字以外(?,!等)の除去
letters_only = re.sub("[^a-zA-Z]", " ", review_text)
#
# 3. 全ての文字を小文字に変更
words = letters_only.lower().split()
#
# 4. ストップワードのリスト作成
stops = set(stopwords.words("english"))
#
# 5. ストップワードの除去
meaningful_words = [w for w in words if not w in stops]
#
# 6. 文にして結果を返す
return( " ".join( meaningful_words ))
clean_review = review_to_words( train["review"][0] )
print(clean_review)
num_reviews = train["review"].size
num_reviews
clean_train_reviews = [] #初期化
for i in range( 0, num_reviews ):
clean_train_reviews.append( review_to_words( train["review"][i] ) )
print ("Creating the bag of words...\n")
from sklearn.feature_extraction.text import CountVectorizer
# 初期化
vectorizer = CountVectorizer(analyzer = "word", \
tokenizer = None, \
preprocessor = None, \
stop_words = None, \
max_features = 5000) #ここで特徴量の数を5000に設定
train_data_features = vectorizer.fit_transform(clean_train_reviews)
#ここで、250000X5000のデータセットが準備できたことが確認できます。
print (train_data_features.shape)
vocab = vectorizer.get_feature_names()
print (vocab)
df = pd.DataFrame(train_data_features)
df.columns = vocab
df.to_csv("train_bag_of_words.csv")
Part 1: For Beginners - Bag of Words
Reference
이 문제에 관하여(Kaggle의 데이터에서 bag of words를 만들어 보았습니다 (2/3)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nana1212/items/1eaadca32349a1314cb4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)