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

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

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

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

Q&A

解決済

1回答

226閲覧

Rのテキストマイニング バイグラムで行番号を付与する方法

0520kameya

総合スコア2

R

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

0グッド

0クリップ

投稿2023/12/25 11:49

実現したいこと

以下のCSVもしくはExcelデータを仮定します

行番号   文章
1     私は料理をする
2     私は運動をする

バイグラムを行い、以下のようなデータを出力したいと考えています。
N1   N2      POS1        POS2    行番号
料理    する   名詞-動詞   サ変接続-自立   1
私    料理   名詞-名詞    代名詞-サ変接続 1
私    運動   名詞-名詞    代名詞-サ変接続 2
運動    する   名詞-動詞   サ変接続-自立  2

上記のように出力するための
コードをご教示いただけますと大変幸いです。

試したこと

以下のCSVファイルを用意しました(ファイル名:Book1)
※ヘッダーに行番号や文章というヘッダーを追加するとエラーになるため、取り除きました。

私は料理をする
私は運動をする

Rで以下のスクリプトを実行しました
library(RMeCab)
library(dplyr)
bigram<-docDF("/ファイルの場所/Book1.csv", type=1, nDF=1, N=2, pos=c("名詞", "形容詞", "動詞"))

結果は以下になりました。
bigram
N1    N2   POS1  POS2     Book1.csv
1 料理   する   名詞-動詞 サ変接続-自立 1
2 私   料理   名詞-名詞  代名詞-サ変接続 1
3 私   運動  名詞-名詞  代名詞-サ変接続 1
4 運動   する  名詞-動詞 サ変接続-自立 1

上記の場合ですと、行番号ではなく、出現頻度が出てきてしまいます。
バイグラムの結果と、元データの行番号をリンクさせる方法をご教示いただけますと大変幸いでございます。

他のライブラリでの方法でも問題ございませんので、
ご教示いただけますと幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

日本語の1行がdfの1レコードとなるようcsvを読み込み、
docDFにdfと列番号を与えればお望みに近い形が出力されます。
あとは必要に応じてlong形式にするなどデータ変形するとよいでしょう。

library(RMeCab); library(dplyr); library(readr) library(tidyr); library(stringr) # long形式化で利用 # 注意 docDFはdata.frameでないとうまく動作しない (tibbleではダメ) the_df <- as.data.frame(readr::read_csv("hoge/Book1.csv", col_names = NA)) # もし列名があるなら、col_name = NAは除外 # (デフォ列名は X1,X2,...。実際のデータの列数・列名に応じて適宜変更してください) bigram <- docDF(the_df, col = "X1", type = 1, nDF = 1, N = 2, pos = c("名詞", "形容詞", "動詞")) # wide形式 bigram # N1 N2 POS1 POS2 Row1 Row2 # 1 料理 する 名詞-動詞 サ変接続-自立 1 0 # 2 私 料理 名詞-名詞 代名詞-サ変接続 1 0 # 3 私 運動 名詞-名詞 代名詞-サ変接続 0 1 # 4 運動 する 名詞-動詞 サ変接続-自立 0 1 # long形式にしたい場合 bigram %>% tidyr::pivot_longer(cols = -c(N1, N2, POS1, POS2), names_to = "rowind", values_to = "freq") %>% filter(freq != 0) %>% mutate(rowind = stringr::str_remove(rowind, "Row")) #  N1 N2 POS1 POS2 rowind freq # <chr> <chr> <chr> <chr> <chr> <int> # 1 料理 する 名詞-動詞 サ変接続-自立 1 1 # 2 私 料理 名詞-名詞 代名詞-サ変接続 1 1 # 3 私 運動 名詞-名詞 代名詞-サ変接続 2 1 # 4 運動 する 名詞-動詞 サ変接続-自立 2 1

投稿2023/12/26 04:17

編集2023/12/26 04:21
cuttlefish44

総合スコア85

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

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

0520kameya

2023/12/26 08:57

こちらいただいたコードにて欲しいデータを抽出することができました。大変ありがとうございました! また、もし差し支えなければなのですが、今回のようなコードはどのようにして導き出されたのでしょうか?? もし書籍など参考にしたものがありましたら、できる範囲でご教示いただけますと大変幸いでございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問