【问题标题】:Boilerpipe to extract non-english news articlesBoilerpipe 提取非英语新闻文章
【发布时间】:2014-02-01 18:16:05
【问题描述】:

我正在尝试使用boilerpipe 从非英文文本中提取新闻文章。我已经看过this,但它对我不起作用。我做了以下更改 1)修改HTMLfetcher.java。在方法 fetch 结束前添加以下行

byte[] utf8 = new String(data, cs.displayName()).getBytes("UTF-8"); //new one (convertion)
    cs = Charset.forName("UTF-8"); //set the charset to UFT-8

或者/然后 2) 使用带有 Inuts 的 UTF-8 字符集更改类中的代码

`URL url = new URL(urls);
        InputSource is = new InputSource();
        is.setEncoding("ISO-8859-1");
        is.setByteStream(url.openStream());


        text = ArticleExtractor.INSTANCE.getText(is);`

还是不行 测试网址:http://www.sandesh.com/article.aspx?newsid=2905443 文本:મુંબઈ, 30 જાન્યુઆરી

સલમાનસલમાનખાનેગુજરાતમાંઆવીનેનરેન્દ્રવખાણશુશુકર્યાતેનીમુસીબતોમાંવધારોથઈગયો � છે.

请帮帮我。

【问题讨论】:

    标签: character-encoding boilerpipe


    【解决方案1】:

    您显然已经能够让 ArticleExtractor 解析 utf-8 文本。 (可能的)问题是样板的算法是专门为英语量身定制的,并且在古吉拉特语(?)文章中效果不佳。算法使用短语的详细程度(例如:每个短语的单词数)以及一些特定的短语(cmets,请说,等等)来确定文章的障碍,以及文章中的哪些部分是内容或非内容。

    查看库的boilerpipe/filters/english 目录以获取有关算法的更多信息。不幸的是,要在非英语语言中获得相同水平的准确度,您需要重复他们对每种语言的研究,或者有一个翻译后的停用词列表,并了解您使用的每种语言的详细程度。

    【讨论】:

    • 我完全同意你的看法。但我的问题是我得到所有的编码??????而不是非英文文本。虽然boilerpipe最适合英文文本,但我对非英文文本也有很好的效果。
    • 坦率地说,这是我的错,其目的是使用相同的非英语语言而不是 ?????(问号或垃圾字符)作为输出完成提取。在相关线程中检查我的相同问题link
    【解决方案2】:

    首先 - 接受的答案是正确的。 Boilerpipe 的算法是专门为英语量身定做的。但是,这并不意味着它不能返回其他语言的粗略内容。请阅读完整接受的答案,下面可能是一个废话,您可能并不总是能得到好的内容...

    Java-

    import java.net.URL;
    
    import org.xml.sax.InputSource;
    
    import de.l3s.boilerpipe.extractors.ArticleExtractor;
    
    public class BoilerpipeTest {
    
        public static void main(String[] args) {
            try{
                //some wrestling match in Russian from Russian newspaper
                URL url = new URL("http://www.azeri.ru/az/traditions/kuraj_pehlevanov/");
    
                InputSource is = new InputSource();
                is.setEncoding("UTF-8");
                is.setByteStream(url.openStream());
    
                String text = ArticleExtractor.INSTANCE.getText(is);
                System.out.println(text);
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    
    }
    

    接下来,如果您使用的是 Eclipse-

    点击 Run > Run Configurations > 并选择 Common Tab,然后选择 Encoding to Other(UTF-8),然后点击 Run,如下所示:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-21
      • 2017-03-03
      • 2017-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多