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

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

新規登録して質問してみよう
ただいま回答率
85.47%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

解決済

1回答

830閲覧

Rのldaパッケージにて、結果を単語ではなく、単語のインデックスで出力させたい

oika77

総合スコア184

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2020/10/17 15:31

編集2020/10/18 01:46

今LDAのプログラムを作っているところなのですが、結果が全て単語で出てくる仕様になっているようです。そこを単語ではなくvocabのインデックスで出力させたいのですが、どうしたら良いかわかる方いらっしゃいましたら教えていただけないでしょうか。

LDAパッケージのサイト

R

1コード 2result <- lda.collapsed.gibbs.sampler(documents, k, vocab, 3 25, # 繰り返し数 4 0.1, # ディリクレ過程のハイパーパラメータα 5 0.1, # ディリクレ過程のハイパーパラメータη 6 compute.log.likelihood=TRUE) 7 8 9top.words <- top.topic.words(result$topics, 30, by.score = TRUE) 10print(top.words)

出力結果が以下
イメージ説明
結果を単語ではなく、単語ベクトル(vocab)のインデックスで取得したいです。

今のところ思いつく方法

単純に出力結果の単語をひとつひとつvocabと比べてインデックスを探していくという方法です。

他にもっとスマートなやり方、出力時にインデックスも同時に出す方法などがありましたら教えてください。

KojiDoiさん

R

1コード 2top.topic.words(result$topics, 5, by.score = TRUE) 3 4top.topic.documents(result$document_sum,num.documents = 5, alpha = 0.1)

この二つの結果が以下です。
イメージ説明
イメージ説明
自分がやりたいのは例えば左上の"多く"という単語のインデックスを取得したいということです。
理想はvocab[136]=="多く"ということです。ただ実際はvocab[136]は違う単語を指していました。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KojiDoi

2020/10/17 16:32

ドキュメントには、 > For top.topic.documents, a num.documents × K integer matrix where each column contains the top documents for that topic. The entries in the matrix are column-indexed references into document_sums. とありますが、そうではない何かをやりたいのでしょうか。
oika77

2020/10/18 01:49

すみません。ありがとうございます!ただ英語があまり理解できず自分で試してみましたが、多分自分がやりたいことではないと思います。やはり出力結果の単語をひとつひとつvocabの単語と比べてインデックスを調べるしかないのでしょうか。
guest

回答1

0

ベストアンサー

indexを得る手段は、素直に考えるとgrep()ですね。

> a<-c("a","c","b","d","e") > sapply(c("a","b","d"), function(x){return(grep(x, a))}) a b d 1 3 4

投稿2020/10/18 13:58

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問