当前位置: 首页 > 知识库问答 >
问题:

命令行的OpenNLP POSTagger输出

阮疏珂
2023-03-14

我想使用OpenNLP来标记泰语单词。我下载了OpenNLP和Thai tokenize模型,并运行了以下程序

./bin/opennlp POSTagger -lang th -model thai.tok.bin < sentence.txt > output.txt

我将下载的thai.tok.bin放在我调用的目录中并运行以下内容。sentence.txtกินอะไรยังนาย中包含此文本。但是,我得到的输出只有这些文本:

Usage: opennlp POSTagger model < sentences
Execution time: 0.000 seconds

我对OpenNLP非常陌生,如果有人知道如何从中获取输出,请告诉我。

共有1个答案

荣波
2023-03-14

链接中的模型已经过时。首先,您需要一些手动步骤来转换模型。

>

  • 下载文件thai.tok.bin.gz并解压缩到一个空文件夹。将解压缩的文件thai.tok.bin重命名为token.model
  • 在同一个文件夹中,创建一个名为manifest.properties的文件,内容如下:

    Manifest-Version=1.0.  
    Language=th  
    OpenNLP-Version=1.5.0  
    Component-Name=TokenizerME  
    useAlphaNumericOptimization=false  
    

    现在您可以压缩文件,如果您正在使用Linux您可以使用以下命令:zipthai.tok.bintoken.modelmanifest.properties

    试试你的模型:

    sh bin/opennlp TokenizerME ~/Downloads/thai-token.bin/thai.tok.bin <  thai_sentence.txt
    
    
    
    Loading Tokenizer model ... done (0,097s)     
    กินอะไร ยังนาย     
    
    
    Average: 333,3 sent/s      
    Total: 1 sent     
    Runtime: 0.003s     
    Execution time: 0,108 seconds 
    

    现在您已经有了更新的标记器,您可以对POS标记器模型进行类似的操作。

    >

    在同一文件夹中,创建一个名为manifest的文件。包含以下内容的属性

    Manifest-Version=1.0
    Language=th
    OpenNLP-Version=1.5.0
    Component-Name=POSTaggerME
    

    现在你可以压缩文件了,如果你使用的是Linux,你可以使用这个命令:zip-thai。pos.bin pos.model舱单。属性

    最后,我们可以尝试两种模式的结合:

    sh bin/opennlp TokenizerME ~/Downloads/thai-token.bin/thai.tok.bin < thai_sentence.txt > thai_tokens.txt
    sh bin/opennlp POSTagger ~/Downloads/pt-pos-maxent/thai.pos.bin < thai_tokens.txt
    

    结果是:

    กินอะไร_VACT ยังนาย_NCMN
    

    请告诉我这是否是预期结果。

  •  类似资料:
    • 如果表达式无法在一行输入完,用三点"…"加回车键表示下一行继续该语句的输入.例如: s = 1 -1/2 + 1/3 -1/4 + 1/5 - 1/6 + 1/7 ... - 1/8 + 1/9 - 1/10 + 1/11 - 1/12; "=","+"和"-"符号前后的空格可以省略,但使用可以增加易读性.

    • 问题内容: 我知道命令行界面(例如Git等)能够隐藏用户的输入(对于密码有用)。有没有办法用Java编程地做到这一点?我正在从用户那里输入密码,我希望他们的输入在该特定行(而不是所有用户)上被“隐藏”。这是我的代码(尽管我怀疑这会有所帮助…) 问题答案: 尝试。不过,您至少必须运行Java 6。 请注意,这不适用于Eclipse控制台。您必须从 真实的 console / shell / term

    • 问题内容: 尝试读取的版本号时,我得到了很多其他行,需要忽略。我尝试阅读的手册,并尝试了以下命令: 我想知道这是否正确吗? 问题答案: 是的,这是从命令获取第一行输出的一种方法。 如果命令以相同的方式输出任何您想要捕获的标准错误,则需要将命令的标准错误重定向到标准输出流: 捕获第一行的方法还有很多,包括(在第一行之后退出),(仅打印第一行,但读取所有内容),(仅打印第一行,但再次读取所有内容)等。

    • 我想知道这是不是正确的做法?

    • 对于Saxon-HE9.6,有没有办法在多个匹配节点上获得换行分隔的输出? 我使用这个名为的包装器: 示例: 我通过搜索google发现了一个半有效的解决方案,几乎不是Michael Kay提出的,所以我写了这个包装器: 但我发现的问题是当我使用路径 我有错误 或

    • 问题内容: 我有一个简单的Python问题,我的大脑停滞不前。此代码段有效。但是,当我用phoneNumber替换“ 258 494-3929”时,出现以下错误: 顺便说一句,我没有和尝试使用的情况下 我还能缺少什么? 问题答案: 您应该使用而不是,而不必调用,因为此函数本身返回一个字符串: