我使用readChar()
函数将文本读入R中。我的目的是检验这样一个假设,即文本的句子出现的字母“a”与字母“b”的出现次数一样多。我最近发现了{stringr}
包,这对我的文本做了很多有用的事情,比如计算整个文本中的字符数和每个字母的出现次数。现在,我需要知道整篇文章中的句子数量。 R有任何功能,可以帮我做到吗?非常感谢你!
答案 0 :(得分: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中的自然语言处理,您可以找到它的简短介绍here,或者您可以查看软件包的文档here。< / p>
包中还支持三种语言。您只需安装并加载相应的模型文件即可。
{openNLPmodels.es}
代表西班牙语{openNLPmodels.ge}
代表德语{openNLPmodels.th}
for Thai 答案 1 :(得分:6)
你正在寻找的是句子标记化,它并不像看起来那么简单,即使是在英语中(句子如“我遇见了Bennett博士,约翰逊夫人的前任丈夫。”可以包含句号)。
R绝对不是自然语言处理的最佳选择。如果您Python精通,我建议您查看nltk模块,其中包含此模块和许多其他主题。您还可以复制this blog post中的代码,该代码执行句子标记化和单词标记化。
如果您想坚持R,我建议您计算句末字符(.
,?
,!
),因为您可以计算字符数。使用正则表达式执行此操作的方式如下:
text <- 'Hello world!! Here are two sentences for you...'
length(gregexpr('[[:alnum:] ][.!?]', text)[[1]])