2

我正在尝试使用调用 Java 的 R 语言 tm 包中的 stemDocument 来阻止语料库。我已经尝试过 tm 手册中的示例:

data("crude")
crude[[1]]
stemDocument(crude[[1]])

并得到以下错误:

Could not initialize the GenericProperitiesCreator.  This exception was produced:  
java.lang.NullPointerException

任何帮助表示赞赏。我对Java一无所知。

谢谢

4

3 回答 3

1

好问题,你解决了吗?

我得到与你唯一的代码相同的错误。但是,如果您从一开始就遵循该示例(即在第 1 页的标题“转换”处)并创建一个语料库并将其转换为纯文本文档,那么您可以避免 Java 错误。我想手册中的代码示例假设您已经完成了这两个步骤。

也就是说,当我检查结果时,没有实际的词干...我什至无法获得 @user813966 的 stemDocument 的简单示例来进行任何词干提取。我正在查看 RStem 和 SnowBall 包。

同时,python 包 NLTK是我的词干提取工具。

更新:我通过添加language = "english"以下内容使 stemDocument 功能正常工作:

a <- tm_map(a, stemDocument, language = "english") 

因此,您问题的完整答案是按照 tm 包将文本输入 R 的所有步骤进行操作。您还需要 rJava(如果您在 Windows 中工作,请将 JAVA_HOME 的环境变量设置为包含 jre 目录的目录)以使 stemDocument 工作

于 2011-11-12T07:24:46.553 回答
1

我这边也有同样的错误。通过在我的类路径中添加 Snowball .jar 和相应的 /words 词干存储库来解决它:C:\Users\xxx.xxx\Documents\R\win-library\2.12\Snowball\java

这是在这里推荐的:http ://weka.wikispaces.com/Stemmers

我仍然有以下错误,但现在可以正常工作:

Trying to add database driver (JDBC): RmiJdbc.RJDriver - Warning, not in CLASSPATH?
Trying to add database driver (JDBC): jdbc.idbDriver - Warning, not in CLASSPATH?
Trying to add database driver (JDBC): org.gjt.mm.mysql.Driver - Warning, not in CLASSPATH?
Trying to add database driver (JDBC): com.mckoi.JDBCDriver - Warning, not in CLASSPATH?
Trying to add database driver (JDBC): org.hsqldb.jdbcDriver - Warning, not in CLASSPATH?
[KnowledgeFlow] Loading properties and plugins...
[KnowledgeFlow] Initializing KF...
于 2011-11-25T19:04:47.447 回答
1

Snowball 词干分析器 (snowball.jar) 找不到 weka.jar 文件。

在您的计算机上,您需要搜索一个名为 weka.jar 的文件。在我的 linux 系统上,它位于

/usr/local/lib/R/site-library/RWekajars/java/weka.jar

然后,在您的 R 代码中,在顶部添加与以下类似的行:

wekajar="/usr/local/lib/R/site-library/RWekajars/java/weka.jar"
oldcp=Sys.getenv("CLASSPATH")
newcp=NULL
Sys.setenv(CLASSPATH=paste(wekajar,newcp, sep=":"))

library("tm")    
data("crude")
stemDocument(crude[[1]], language = "english" )

这会将 R 会话的 Java CLASSPATH 设置为上面的 weka.jar 文件。不过,您现有的类路径将被重置。如果您有一些,并且如果您需要它们,您可以尝试添加旧条目。

于 2013-01-10T15:04:55.290 回答