如何使用tm包进行希伯来语或阿拉伯语的文本分析

时间:2017-07-06 14:57:28

标签: r text tm

我想使用tm包进行希伯来语或阿拉伯语文本分析。我尝试了几种方法来查看tm是否能够处理一些单词,但我遇到了错误,有没有办法解决这个问题?

 text  <- "הנוסעים חיכו זמן רב לנסיעה"
 Encoding(text)
#[1] "unknown"
 Encoding(text)  <- "UTF-8"
 ap.corpus <- Corpus(DataframeSource(data.frame(text)))
 ap.corpus <- tm_map(ap.corpus, removePunctuation)
 ap.corpus <- tm_map(ap.corpus, content_transformer(tolower))
Error in FUN(content(x), ...) : 
  invalid input 'הנוסעים חיכו זמן רב לנסיעה' in 'utf8towcs'

2 个答案:

答案 0 :(得分:1)

来自tm vignette

  

语料库构造函数的第二个参数readerControl必须是   包含命名组件阅读器和语言的列表。 (...)最后,   第二个组件language设置文本的语言(最好使用   ISO 639-2规范)。

Wikipedia起,ISO 639-2阿拉伯语代码为ara,而希伯来语heb代码为 ap.corpus <- Corpus(DataframeSource(data.frame(text), readerControl = list(language = "heb"))) 。所以也许试试这个:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform version="3.0">
  <xsl:output indent="yes"/>
  <xsl:mode on-no-match="shallow-copy"/>
  <xsl:template match="text()"/>
</xsl:stylesheet>

编辑:很高兴你找到了答案。使用错误的编码时会出现此错误:

答案 1 :(得分:1)

以下是答案,我们需要添加这种编码方法:

iconv(text, "ISO-8859-8", "UTF-8")[1]

而不是使用:Encoding(text) <- "UTF-8"