7

関数を使用して R にテキストを読み込みreadChar()ます。テキストの文には、文字「a」の出現回数と文字「b」の出現回数が同じであるという仮説を検証することを目的としています。私は最近このパッケージを発見しました。この{stringr}パッケージは、テキスト全体の文字数や各文字の合計出現数をカウントするなど、テキストで役立つことを行うのに大いに役立ちました。ここで、テキスト全体の文数を知る必要があります。Rには、それを行うのに役立つ機能がありますか? どうもありがとうございました!

4

2 に答える 2

11

回答ありがとうございます@gui11aume。仕事をするのを助けることができる私がちょうど見つけた非常に良いパッケージはです{openNLP}。これを行うためのコードは次のとおりです。

install.packages("openNLP") ## Installs the required natural language processing (NLP) package
install.packages("openNLPmodels.en") ## Installs the model files for the English language
library(openNLP) ## Loads the package for use in the task
library(openNLPmodels.en) ## Loads the model files for the English language

text = "Dr. Brown and Mrs. Theresa will be away from a very long time!!! I can't wait to see them again." ## This sentence has unusual punctuation as suggested by @gui11aume

x = sentDetect(text, language = "en") ## sentDetect() is the function to use. It detects and seperates sentences in a text. The first argument is the string vector (or text) and the second argument is the language.
x ## Displays the different sentences in the string vector (or text).

[1] "Dr. Brown and Mrs. Theresa will be away from a very long time!!! "
[2] "I can't wait to see them again."

length(x) ## Displays the number of sentences in the string vector (or text).

[1] 2

このパッケージは、Rでの自然言語処理に非常に優れており、ここ{openNLP}で簡単な紹介を見つけることができます。または、パッケージのドキュメントをここで確認することもできます。

パッケージでは、さらに3つの言語がサポートされています。対応するモデルファイルをインストールしてロードするだけです。

  1. {openNLPmodels.es}スペイン語の場合
  2. {openNLPmodels.ge}ドイツ語用
  3. {openNLPmodels.th}タイ語の場合
于 2012-09-26T15:37:59.243 に答える
6

あなたが探しているのは文のトークン化であり、英語であっても見た目ほど単純ではありません (「ジョンソン夫人の元夫であるベネット博士に会いました」などの文にはピリオドが含まれる場合があります)。

R が自然言語処理に最適であることは間違いありません。Pythonに精通している場合は、nltkモジュールを参照することをお勧めします。このモジュールでは、これと他の多くのトピックがカバーされています。文のトークン化と単語のトークン化を行うこのブログ投稿からコードをコピーすることもできます。

R に固執したい場合は、文字を数えることができるので、文末の文字 ( .?、 ) を数えることをお勧めします。!正規表現でそれを行う方法は次のようになります。

text <- 'Hello world!! Here are two sentences for you...'
length(gregexpr('[[:alnum:] ][.!?]', text)[[1]])
于 2012-09-26T09:16:40.040 に答える