Python NLTK训练数据集



我正在尝试训练我的NLTK模型来识别电影名称(例如《权力的游戏》(我有一个文本文件,其中每一行都是一个电影名称。

如果我的NLTK模型在标记化过程中在句子中看到这些电影名称,我该如何训练它来识别这些电影名称?

我四处寻找,但没有找到任何资源。感谢提供的任何帮助

听起来你在谈论为电影名称训练命名实体识别(NER(模型。要以传统方式训练NER模型,您需要的不仅仅是一个电影名称列表,还需要一个标记的语料库,它可能看起来像以下内容(基于此处的"数据集格式"(:

I PRP O
like VBP O
the DT O
movie NN O
Game NN B-MOV
of IN I-MOV
Thrones NN I-MOV
. Punc O

但要持续很长一段时间(比如说,在运行文本中至少要有10000个单词来给出足够多的电影名称示例(。每个单词后面跟着词性(POS(标签,然后是NER标签。B-MOV表示"游戏"是电影名称的开头,I-MOV表示"of"one_answers"Thrones"位于电影名称的"内部"。(顺便说一句,《权力的游戏》不是一部电视剧而不是一部电影吗?无论如何,我只是在重复你的例子…(

您将如何创建此数据集?手工注释。这是一个费力的过程,但这就是最先进的NER系统的训练方式,因为是否应该将某个东西检测为电影名称取决于它出现的上下文。例如,迪士尼有一部电影叫"外星人",但"外星人"这个词是下面第二句中的电影标题,而不是第一句。

  1. 外星人是来自其他星球的假想存在
  2. 上周我去看了《异形》

像docanno这样的工具可以帮助注释过程。应根据最终用例选择要注释的数据集。例如,如果您希望能够在新闻文章中找到电影名称,请使用新闻文章语料库。如果你想在电子邮件中找到电影名称,请使用电子邮件。如果你想在任何类型的文本中找到电影名称,可以使用一个包含各种不同类型文本的语料库。

如果您决定坚持使用NLTK的训练和NER模型,这是一个很好的起点,尽管这里的一些答案建议您使用其他库,例如spaCy。

或者,如果整个标记过程听起来工作量太大,而您只想使用电影名称列表,请查看模糊字符串匹配。在这种情况下,我不认为NLTK是要使用的库,因为我不知道NLTK中有任何模糊字符串匹配功能。您可以根据此处的答案使用fuzzysearch

最新更新