我的MUC数据集存在问题。我想对此做NER,但是这里有所有的话 数据集是大写字母,因此当运行pos_tagger时,它会错误地检测所有单词 作为名词。为了解决这个问题,整个文本最初转为小写。然而, 这种方式引发了另一个问题;如果文本是小写字母,则NER不起作用 正确地,字面上没有找到“人,组织或地点”。就这样 保留了将整个文本转换为小写,以便能够成功地pos_tag,和 然后执行每个单词的手动大写以将它们输入NER 模块。但是另一个问题引起了,这次NER将所有内容都检测为LOCATION。 这是我的代码:
import nltk
from nltk.tokenize import word_tokenize, sent_tokenize
def NER(input_file, output_file):
output = open('{0}_NER.txt'.format(output_file), 'w')
testset = open(input_file).readlines()
for line in testset:
line_clean = line.lower().strip()
tokens = nltk.word_tokenize(line_clean)
poss = nltk.pos_tag(tokens)
mylist = []
for w in poss:
s = list(w)
s1 = s[0].upper()
tmp = (s1, w[1])
mylist.append(tmp)
ner_ = nltk.ne_chunk(mylist)
非常感谢任何帮助。 感谢。
以下是此数据集的一部分:
圣萨尔瓦多,1999年1月3日 - [报告] [武装部队新闻委员会, COPREFA] [文本] ARCE BATTALION指挥已经报告了大约50个 各种年龄的农民都被恐怖主义分子逮捕 圣米格尔的FARABUNDO MARTI国家解放前线[FMLN] 部门。根据那个加里森,大众要求坚持到位 12月30日在SAN LUIS DE LA REINA。来自恐怖分子的消息来源 强迫个人,世界卫生组织已经到了一个未知的位置 他们的居民,可以将他们的意愿纳入其中 CLANDESTINE GROUPS。答案 0 :(得分:1)
您最好的选择是在案例折叠的文本上训练您自己的命名实体分类器。 nltk book在第6章和第7章中有一步一步的教程。对于培训,您可以使用CONLL 2003 corpus。
考虑在案例折叠的文本上训练自己的POS标记器,它可能比你现在使用的nltk POS标记器更好地工作(但检查)。
答案 1 :(得分:0)
如果您的任务是NER,为什么还需要POS标记?据我所知,POS标签并没有真正改善NER结果。我同意Alexis您需要训练自己的分类器,因为您无法获得没有案例信息的字形功能。