質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

解決済

python word2vecのコーパスについて

---stax---
---stax---

総合スコア148

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

1回答

0評価

0クリップ

6459閲覧

投稿2018/05/18 07:39

表題の件で質問させてください
かなり初歩的な質問になります

word2vecでモデル生成時に使うコーパスの作り方がどのように作るべきものなのか分からず悩んでいます
あるEXCElシートから特定の列のテキストを抜出し、そのテキストに対して形態素解析をさせ、その結果をリストに格納しています。
この時のリストへの格納の仕方なのですが、例えば以下のようなテキストを'名詞','形容詞','動詞'で形態素解析したとします

pythonは、プログラミング言語である。 コードがシンプルで扱いやすく設計されており、C言語などに比べて、さまざまなプログラムを分かりやすく、少ないコード行数で書けるといった特徴がある

この際、結果をリストに格納する場合の方法なのですが①、②のどちらで格納すべきなのでしょうか?
①に関しては文章を一つの要素としていますが'python プログラミング'という単語になっているためテキストファイル等に別途起こさなければword2vecのモデルには渡せないないかなと考えます

②に関しては単語ごとに一つの要素となりますが単語の前後の言葉の関係性が取れるのかなと疑問に感じます

test = [] ① test[0] = 'python プログラミング' test[1] = '言語 コード シンプル 扱う やすい ~ ' ② test[0] = 'python' test[1] = 'プログラミング' test[2] = '言語' test[3] = 'コード'

①はテキストの名詞だけをリストに格納し、そのリストをテキストファイルに書き起こし、テキストファイルを学習モデルとして渡すことで単語の類似度は確認できました

②はテキストの名詞だけをリストに格納し、そのリストを学習モデルとして渡すことで単語の類似度は確認できました

両方で処理自体は実行できたのですが、webなどで検索すると、コーパスは空白で区切られたテキスト、と書かれている記事があれば、②のように形態素解析した内容をリストに格納して結果を求める方法と両方のやり方が紹介されており、どちらが正しい手法なのか知識が浅いため疑問に感じるためアドバイス頂けたら幸いです

またwindowパラメータは前後の単語を拾う際の窓の広さを決めるというよう理解しているのですが、①はこれが有効に働いている気がするのですが、②は単語ごとに別の要素となっていますが、それでもこのパラメータは有効に働いているのでしょうか?

機械学習自体の知識がなく、かなり的外れな質問をして申し訳ありません
アドバイス宜しくお願い致します

python

import pandas as pd from janome.tokenizer import Tokenizer from collections import Counter from gensim.models import word2vec #ファイル指定 input_file_name = (r'C:\Users\Desktop\Book.xlsm') #ファイル読み込み input_book = pd.ExcelFile(input_file_name) #シート名取得(sheet_namesメソッドでExcelブック内の各シートの名前をリスト型で取得) input_sheet_name = input_book.sheet_names #シート総数取得 num_sheet = len(input_sheet_name) #シート総数表示 print('シートの数:', num_sheet) #シート名表示 print('シートの名前:',input_sheet_name) #type確認 print('type :',type(input_book)) input_sheet_df = input_book.parse(input_sheet_name[1], skiprows = 5, skip_footer = 1, usecols = 'Z,AD:AF', names = range(0,4)) ret = [] #1パターン for wordlist in input_sheet_df[1]: print(wordlist) strword = '' tokens = t.tokenize(str(wordlist)) for token in tokens: #print(token) if token.part_of_speech.split(',')[0] in ['名詞','形容詞','動詞']: strword = strword + token.surface + ' ' ret.append(strword) #2パターン #for wordlist in input_sheet_df[1]: # #print(wordlist) # #strword = '' # tokens = t.tokenize(str(wordlist)) # for token in tokens: # #print(token) # if token.part_of_speech.split(',')[0] in ['名詞','形容詞','動詞']: # ret.append(token.base_form) print(ret) #word2vec #1パターン #txtdata = word2vec.LineSentence(r'C:/Users/Desktop/test.txt') #model = word2vec.Word2Vec(txtdata, size=100, min_count=5, window=3, iter=200, seed=0 ) #model.save('C:/Users/Desktop/test.model') word2vec_model = word2vec.Word2Vec.load('C:/Users/Desktop/test.model') #2パターン #model = word2vec.Word2Vec([ret], size=100, min_count=1, window=1, iter=200, seed=0 ) #model.save('C:/Users/Desktop/test.model') #word2vec_model = word2vec.Word2Vec.load('C:/Users/Desktop/test.model') ttt = word2vec_model.wv.most_similar(positive=['中間'], topn=10) for item in ttt: print(item[0], item[1])

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。