使用 WEKA 进行命名实体识别
Named Entity Recognition using WEKA
我是 WEKA 的新手,我想问你几个关于 WEKA 的问题。
我遵循了本教程 (Named Entity Recognition using WEKA)。
但是我真的很迷茫,完全没有头绪
- 如果我想按非 word/token 的短语过滤字符串是否可能?
例如在我的 .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
所以,当我过滤字符串时,它将字符串标记为单词,但我想要的是,我想根据短语 tokenize/filter 字符串。例如根据分块属性提取短语"New York"而不是"New"和"York"。
"B-NP" 表示开始短语,"I-NP" 表示下一个短语(短语的中间或结尾)。
- 如何显示 classify class 的结果,例如:
B-PER 和 I-PER 到 class 人名?
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
在我看来,WEKA 不会(目前)成为执行 NER 的最佳机器学习软件...据我所知,WEKA 会 class 验证示例集,对于 NER 它可能完成:
- 通过标记中的句子标记:在这种情况下序列(即连续性)将丢失..."New"和"York"是两个不同的例子, 这些词是连续的这一事实将不会以任何方式被考虑在内。
- 通过将块/句子作为示例:然后可以将序列作为一个整体保存并进行过滤(例如 StringToWordVector),但必须关联一个 class对于每个 chunk/sentence(例如 O+O+O+B-LOC+I-LOC+O 是您示例中整个句子的 class)。
在这两种情况下,都没有考虑到连续性,这确实令人不安。另外,据我所知,这对于 R (?) 也是一样的。这就是为什么 "sequence labelling"(NER、词法语法、语法和依赖项)通常使用软件来完成,该软件使用当前单词、上一个单词、下一个单词等来确定标记类别,并且可以输出单个标记,也可以输出多个标记表达式或更复杂的结构。
对于NER,目前通常使用CRF,见:
- CRF++
- CRFSuite
- 麋鹿
- 木槌
- ...
我是 WEKA 的新手,我想问你几个关于 WEKA 的问题。 我遵循了本教程 (Named Entity Recognition using WEKA)。
但是我真的很迷茫,完全没有头绪
- 如果我想按非 word/token 的短语过滤字符串是否可能?
例如在我的 .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
所以,当我过滤字符串时,它将字符串标记为单词,但我想要的是,我想根据短语 tokenize/filter 字符串。例如根据分块属性提取短语"New York"而不是"New"和"York"。
"B-NP" 表示开始短语,"I-NP" 表示下一个短语(短语的中间或结尾)。
- 如何显示 classify class 的结果,例如:
B-PER 和 I-PER 到 class 人名?
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
在我看来,WEKA 不会(目前)成为执行 NER 的最佳机器学习软件...据我所知,WEKA 会 class 验证示例集,对于 NER 它可能完成:
- 通过标记中的句子标记:在这种情况下序列(即连续性)将丢失..."New"和"York"是两个不同的例子, 这些词是连续的这一事实将不会以任何方式被考虑在内。
- 通过将块/句子作为示例:然后可以将序列作为一个整体保存并进行过滤(例如 StringToWordVector),但必须关联一个 class对于每个 chunk/sentence(例如 O+O+O+B-LOC+I-LOC+O 是您示例中整个句子的 class)。
在这两种情况下,都没有考虑到连续性,这确实令人不安。另外,据我所知,这对于 R (?) 也是一样的。这就是为什么 "sequence labelling"(NER、词法语法、语法和依赖项)通常使用软件来完成,该软件使用当前单词、上一个单词、下一个单词等来确定标记类别,并且可以输出单个标记,也可以输出多个标记表达式或更复杂的结构。
对于NER,目前通常使用CRF,见:
- CRF++
- CRFSuite
- 麋鹿
- 木槌
- ...