7

readChar()我使用该函数将文本读入 R。我的目的是检验文本句子中出现字母“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

{openNLP}包非常适合 R 中的自然语言处理,您可以在此处找到一个很好的简短介绍,或者您可以此处查看该包的文档。

包中还支持另外三种语言。您只需要安装并加载相应的模型文件。

  1. {openNLPmodels.es}西班牙语
  2. {openNLPmodels.ge}德语
  3. {openNLPmodels.th}泰语
于 2012-09-26T15:37:59.243 回答
6

您正在寻找的是句子标记化,它并不像看起来那么简单,即使在英语中也是如此(像“我遇到了 Bennett 博士,约翰逊夫人的前夫。”这样的句子可以包含句号)。

R 绝对不是自然语言处理的最佳选择。如果你精通Python,我建议你看看nltk模块,它涵盖了这个和许多其他主题。您还可以复制此博客文章中的代码,该代码进行句子标记化和单词标记化。

如果您想坚持使用 R,我建议您计算句末字符(., ?, !),因为您可以计算字符。使用正则表达式的方法如下:

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