文字ベクトル内の隣接する単語の頻繁なペアを見つけるにはどうすればよいでしょうか? たとえば、原油データセットを使用すると、「原油」、「石油市場」、「百万バレル」などの一般的なペアがいくつかあります。
以下の小さな例のコードは、頻繁に使用される用語を特定しようとし、肯定的な先読みアサーションを使用して、それらの頻繁に使用される用語の直後に頻繁に使用される用語が何回続くかを数えます。しかし、その試みは墜落し、燃えました。
最初の列 (「ペア」) に共通のペアを表示し、2 番目の列 (「カウント」) にそれらがテキストに出現した回数を示すデータ フレームを作成する方法について、ガイダンスをいただければ幸いです。
library(qdap)
library(tm)
# from the crude data set, create a text file from the first three documents, then clean it
text <- c(crude[[1]][1], crude[[2]][1], crude[[3]][1])
text <- tolower(text)
text <- tm::removeNumbers(text)
text <- str_replace_all(text, " ", "") # replace double spaces with single space
text <- str_replace_all(text, pattern = "[[:punct:]]", " ")
text <- removeWords(text, stopwords(kind = "SMART"))
# pick the top 10 individual words by frequency, since they will likely form the most common pairs
freq.terms <- head(freq_terms(text.var = text), 10)
# create a pattern from the top words for the regex expression below
freq.terms.pat <- str_c(freq.terms$WORD, collapse = "|")
# match frequent terms that are followed by a frequent term
library(stringr)
pairs <- str_extract_all(string = text, pattern = "freq.terms.pat(?= freq.terms.pat)")
ここで努力が挫折します。
Java や Python を知らなかったので、これらはJava が単語のペアを数えるの に役立ちませんでした。
ありがとうございました。