从命令行输出OpenNLP POSTagger

时间:2017-04-28 17:35:37

标签: nlp opennlp

我想使用OpenNLP来标记泰语单词。我下载了OpenNLP和Thai tokenize model并运行以下

./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 个答案:

答案 0 :(得分:5)

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

  1. 下载文件thai.tok.bin.gz并解压缩到空文件夹。将提取的文件thai.tok.bin重命名为token.model
  2. 在同一文件夹中,使用以下内容创建名为manifest.properties的文件:

    Manifest-Version=1.0.  
    Language=th  
    OpenNLP-Version=1.5.0  
    Component-Name=TokenizerME  
    useAlphaNumericOptimization=false  
    
  3. 现在您可以压缩文件,如果您使用的是Linux,则可以使用此命令:zip thai.tok.bin token.model manifest.properties

  4. 试试你的模特:

    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 
    
  5. 现在你已经拥有了更新的标记器,你可以使用POS标记器模型。

    1. 下载文件thai.tag.bin.gz并解压缩到空文件夹。将提取的文件thai.tag.bin重命名为pos.model

    2. 在同一文件夹中,使用以下内容创建名为manifest.properties的文件:

      Manifest-Version=1.0
      Language=th
      OpenNLP-Version=1.5.0
      Component-Name=POSTaggerME
      
    3. 现在您可以压缩文件,如果您使用的是Linux,则可以使用此命令:zip thai.pos.bin pos.model manifest.properties

    4. 最后,我们可以尝试将两个模型结合起来:

      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
      

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