从命令行输出OpenNLP POSTagger

tit*_*ata 1 nlp opennlp

我想使用OpenNLP来标记泰语单词.我下载了OpenNLP和Thai tokenize模型并运行以下命令

./bin/opennlp POSTagger -lang th -model thai.tok.bin < sentence.txt > output.txt
Run Code Online (Sandbox Code Playgroud)

我把thai.tok.bin它下载到我调用的目录上并运行以下命令.sentence.txt里面有这个文字?????????????.但是,我得到的输出只有这些文字:

Usage: opennlp POSTagger model < sentences
Execution time: 0.000 seconds
Run Code Online (Sandbox Code Playgroud)

我很新OpenNLP,如果有人知道如何从中获取输出,请告诉我.

wco*_*len 5

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

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

    Manifest-Version=1.0.  
    Language=th  
    OpenNLP-Version=1.5.0  
    Component-Name=TokenizerME  
    useAlphaNumericOptimization=false  
    
    Run Code Online (Sandbox Code Playgroud)
  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 
    
    Run Code Online (Sandbox Code Playgroud)

现在您已经拥有了更新的tokenizer,您可以使用POS Tagger模型.

  1. 下载文件thai.tag.bin.gz并解压缩到一个空文件夹.将解压缩的文件重命名thai.tag.binpos.model

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

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

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

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
Run Code Online (Sandbox Code Playgroud)

结果是:

???????_VACT ??????_NCMN
Run Code Online (Sandbox Code Playgroud)

如果这是预期的结果,请告诉我.