使用WEKA命名的实体识别

时间:2015-04-07 08:32:35

标签: weka named-entity-recognition

我是WEKA的新手,我想问你几个关于WEKA的问题。 我遵循了本教程(Named Entity Recognition using WEKA)。

但我真的很困惑,根本不知道。

  1. 我是否可以按短语过滤字符串而不是字/令牌?
  2. 例如在我的.ARFF文件中:

      @attribute text string
      @attribute tag {CC, CD, DT, EX, FW, IN, JJ, JJR, JJS, LS, MD, NN, NNS, NNP, NNPS, PDT, POS, PRP, PRP$, RB, RBR, RBS, RP, SYM, TO, UH, VB, VBD , VBG, VBN , VBP, VBZ, WDT, WP, WP$, WRB, ,, ., :}
      @attribute capital {Y, N}
      @attribute chunked {B-NP, I-NP, B-VP, I-VP, B-PP, I-PP, B-ADJP, B-ADVP , B-SBAR, B-PRT, O-Punctuation}
      @attribute @@class@@ {B-PER, I-PER, B-ORG, I-ORG, B-NUM, I-NUM, O, B-LOC, I-LOC}
    
      @data
      'Wanna',NNP,Y,B-NP,O
      'be',VB,N,B-VP,O
      'like',IN,N,B-PP,O
      'New',NNP,Y,B-NP,B-LOC
      'York',NNP,Y,I-NP,I-LOC
       '?',.,N,O-Punctuation,O
    

    所以,当我过滤掉字符串时,它将字符串标记为单词,但我想要的是,我想根据短语对字符串进行标记/过滤。例如,根据分块属性提取短语“New York”而不是“New”和“York”。

    “B-NP”表示开始短语,“I-NP”表示下一个短语(短语的中间或末尾)。

    1. 如何显示classify类的结果,例如:
    2. B-PER和I-PER为班级名PERSON?

                       TP Rate   FP Rate   Precision   Recall  F-Measure   ROC Area  Class
                          0         0.021      0         0         0          0.768    B-PER
                          1         0.084      0.333     1         0.5        0.963    I-PER
                        0.167     0.054      0.167     0.167     0.167      0.313    B-ORG
                          0         0          0         0         0          0.964    I-ORG
                          0         0          0         0         0          0.281    B-NUM
                          0         0          0         0         0          0.148    I-NUM
                          0.972     0.074      0.972     0.972     0.972      0.949    O
                          0.875     0          1         0.875     0.933      0.977    B-LOC
                          0         0          0         0         0          0.907    I-LOC
      

      加权平均值0.828 0.061 0.811 0.828 0.813 0.894

1 个答案:

答案 0 :(得分:2)

在我看来,WEKA(目前)不是最好的机器学习软件来做NER ......据我所知,WEKA确实对一组示例进行了分类,对于NER它可以做到:< / p>

  1. 通过对令牌中的句子进行标记:在这种情况下,序列(即连续性)将会丢失...&#34;新的&#34;和&#34;约克&#34;是两个单独的例子,这些词是连续的这一事实不会以任何方式被考虑在内。
  2. 通过保持块/句子为例:序列可以作为一个整体保存并过滤(例如StringToWordVector),但每个块/句子必须关联一个类(例如O + O + O + B-LOC + I-LOC + O是您示例中整个句子的类。)
  3. 在这两种情况下,都不考虑邻接,这实在令人不安。另外,据我所知,R(?)也是如此。这就是为什么&#34;序列标记&#34; (NER,形态语法,语法和依赖性)通常使用软件来完成,该软件使用当前单词确定令牌类别,但也可以使用前一个,下一个单词等来确定令牌类别,并且可以输出单个令牌,但也可以输出多重表达式或更复杂的结构。

    对于NER,目前通常使用CRF,参见:

    • CRF ++
    • CRFSuite
    • 马鹿
    • ...