0

Carrot2-我尝试通过 bisectingKmeans 算法对文档进行聚类。我设置了resouceLookup的属性并测试了英文/中文的语言。它都导致错误“资源查找位置中没有名为 stopwords.ar 的资源......”。我写的鳕鱼:

//set the resoucelookup
File resDir = new File("resouces");
ResouceLookup res = new ResouceLookup(new DirLocator(resDir));
LexicalDataLoaderDescriptor.attributeBuilder(preprocessAttr).resourceLookup(res);
//set the language
MultilingualClusteringDescriptor.attributeBuilder(processingAttr)
            .defaultLanguage(LanguageCode.CHINESE_SIMPLIFIED);

有什么问题?谢谢。

4

2 回答 2

0

解决这个问题的最明确的方法是将所有的词汇资源复制到你的resources目录中。例如,您可以在Carrot2 Java API 分发中找到资源文件。

另一种方法是告诉 Carrot2 从类路径(Carrot2 JAR)中加载缺失的资源:

File resourcesDir = new File("resources");
ResourceLookup resourceLookup = new ResourceLookup(
    new DirLocator(resourcesDir),   // your custom location
    new ContextClassLoaderLocator() // fallback: classpath (Carrot2 JAR)
);
LexicalDataLoaderDescriptor.attributeBuilder(attrs)
    .resourceLookup(resourceLookup);

在这种安排下,您的resources目录只能包含您想要覆盖的资源。未覆盖的(以及您不关心的)将从 Carrot2 JAR 加载。

这里有两个警告

  • 当您升级 Carrot2 JAR 时,回退资源可能会悄无声息地发生变化。
  • 如果自定义位置配置错误(例如传递一个空目录),集群将默默地继续使用内置词法资源而没有任何特定警告(除非您使用调试日志记录级别)。
于 2014-04-30T06:55:35.670 回答
0

Copying all the resources is a better idea and the reason why there is no default fallback -- you will have complete control over what resources are present and for which language. This is important because resources are merged by default http://download.carrot2.org/head/manual/index.html#section.attribute.kmeans.merge-resources

于 2014-04-30T07:12:06.423 回答