問題タブ [doc2vec]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 会話データを (Context 、 Response) のペアに分割する方法
Gensim Doc2Vec モデルを使用して、カスタマー サポートの会話の一部をクラスター化しようとしています。私の目標は、サポート チームに自動応答の提案を提供することです。
図 1:ユーザーの質問が次の会話行で回答される会話の例を示しており、データを簡単に抽出できます。
会話中に「こんにちは」と「私たちのオフィスはニューヨークにあります」と提案する必要があります
図 2:質問と回答が同期していない会話を説明する
会話中に「こんにちは」と「私たちのオフィスはニューヨークにあります」と提案する必要があります
図 3:回答のコンテキストが時間の経過とともに構築される会話を示しており、分類の目的で (私は推測していますが)、一部の行は冗長です。
会話中に「無料試用アカウントへのリンクはこちらです」と提案する必要があります
会話行ごとに次のデータがあります (簡略化):
誰が行を書いたか (ユーザーまたはエージェント)、テキスト、タイムスタンプ
次のコードを使用してモデルをトレーニングしています。
Q : トレーニング データをどのように構造化すればよいですか? また、生データからトレーニング データを抽出するために適用できるヒューリスティックは何ですか?
python - doc2vec - Python での doc2vec トレーニングと infer_vector() の入力形式
gensim で、doc2vec モデルをトレーニングするための入力として文字列を指定すると、次のエラーが発生します。
TypeError('don't know how to handle uri %s' % repr(uri))
この質問Doc2vec : TaggedLineDocument()を参照しまし たが、入力形式についてはまだ疑問があります。
documents = TaggedLineDocument('myfile.txt')
myFile.txt には、各ドキュメントまたは文字列の各行に、リストのリストまたは個別のリストとしてトークンを含める必要がありますか?
For eg
- 書類が 2 つあります。
Doc 1 : 機械学習は、パターン認識の研究から発展したコンピューター サイエンスのサブフィールドです。
Doc 2 : Arthur Samuel は、機械学習を「コンピューターに学習能力を与える研究分野」と定義しました。
それで、どのmyFile.txt
ように見えるべきですか?
ケース 1 : 各文書の各行の単純なテキスト
機械学習は、パターン認識の研究から発展したコンピューター サイエンスのサブフィールドです。
Arthur Samuel は、機械学習をコンピュータに学習能力を与える研究分野と定義しました。
ケース 2 : 各ドキュメントのトークンを持つリストのリスト
[ ["Machine", "learning", "is", "a", "subfield", "of", "computer", "science", "that", "evolved", "from", "the", "study", "of", "pattern", "recognition"]
、
ケース 3 : 各ドキュメントのトークンのリストを別の行に表示する
そして、テストデータでそれを実行しているとき、ドキュメントベクトルを予測したい文の形式は何ですか? 以下のケース1またはケース2のようにする必要がありますか?
model.infer_vector(testSentence, alpha=start_alpha, steps=infer_epoch)
testSentence は次のようになります。
ケース 1 : 文字列
ケース 2 : トークンのリスト
python - gensim Doc2Vec と tensorflow Doc2Vec の比較
Doc2Vec (tf 経由) の実装と gensims の実装を比較しようとしています。少なくとも視覚的には、gensim の方がパフォーマンスが優れているように見えます。
次のコードを実行して gensim モデルをトレーニングし、その下のコードを tensorflow モデル用にトレーニングしました。私の質問は次のとおりです。
- Doc2Vec の私の tf 実装は正しいですか。基本的に、単語ベクトルと文書ベクトルを連結して、特定のコンテキストで中間の単語を予測することになっていますか?
- gensimの
window=5
パラメーターは、両側の 2 つの単語を使用して中央の単語を予測していることを意味しますか? それとも左右5か。問題は、長さが 10 より小さいドキュメントがかなりあるということです。 - Gensim のパフォーマンスが優れている理由についての洞察はありますか? 私のモデルは、彼らがそれを実装する方法と何か違いがありますか?
- これが実質的に行列因数分解の問題であることを考えると、なぜ TF モデルで答えが得られるのでしょうか? ランク不足の問題であるため、これには無限の解決策があります。<- この最後の質問は単なるおまけです。
ゲンシム
TF
アップデート:
ここでjupyterノートブックをチェックしてください(ここで両方のモデルが動作し、テストされています)。この初期分析では、gensim モデルのパフォーマンスが向上しているように感じられます。
python - doc2vecのPythonの簡単な実装?
gensim から doc2vec を実装しようとしていますが、いくつかのエラーがあり、Web 上に十分なドキュメントやヘルプがありません。ここに私の作業コードの一部があります:
私のtxtファイルはどのように見えますか:
モデルを初期化する
印刷出力例:
エラーの場所は次のとおりです。
理由はありますか?
python - python gensimはdoc2vecのtagedlinedocumentから元の文を取得します
Gensim の doc2vec メソッドを使用して、1 行に 1 文のテキスト ファイルを読み込んでいます。キーが用語のトークン化されたリストであり、値が文番号である辞書に私のファイルを読み込みます。
これが私のコードです:
新しいファイルの出力例:
次に、そのリストを gensim の taggedlinedocument 関数にフィードします。
出力例:
質問は、タグ ID (例 0) が与えられた場合、どうすれば元の文を取得できますか?
similarity - 単語ベクトルと段落ベクトルのクエリ
Gensim の実装における word2vec と doc2vec ベクトルの関係を理解しようとしています。私のアプリケーションでは、同じラベル (トピック) で複数のドキュメントにタグを付けています。単語ベクトルもトレーニングするために、dbow_words=1 を使用してコーパスで doc2vec モデルをトレーニングしています。この方法で単語ベクトルと文書ベクトルの間の類似性を得ることができましたが、これは非常に理にかなっています。単語に似たドキュメントのラベルを取得する - doc2vec_model.docvecs.most_similar(positive = [doc2vec_model["management"]], topn = 50))
しかし、私の質問は、word2vec と doc2vec ベクトルの間の類似性を計算することの理論的解釈についてです。同じ次元 (d = 200) の同じコーパスでトレーニングすると、単語ベクトルと文書ベクトルを常に比較して、文書ラベルの類似単語または単語の類似文書ラベルを見つけることができると想定しても安全でしょうか。どんな提案やアイデアも大歓迎です。
質問 2: 私の他の質問は、最終的な word2vec モデルにおける単語の高頻度/低頻度の影響についてです。wordA と wordB がドキュメントの特定の doc ラベル (セット) で類似したコンテキストを持っているが、wordA が wordB よりもはるかに高い頻度を持っている場合、wordB は対応する doc ラベルとの類似性スコアが高いかどうか。コーパスを一時的にサンプリングすることにより、複数の word2vec モデルをトレーニングしようとしています。コンテキストが比較的似ていると仮定すると、単語がますます頻繁になるという仮説が、ドキュメント ラベルとの類似性スコアも増加するかどうかを知りたいです。この仮定をするのは間違っていますか?提案/アイデアは大歓迎です。
ありがとう、マニッシュ