bert ner 中文 Named Entity Recognition 命名實體識別

bert_ner Source Code

 

中文 Named Entity Recognition 命名實體識別 – NER

命名實體識別(英語:Named Entity Recognition,簡稱NER),又稱作專名識別、命名實體,是指識別文本中具有特定意義的實體,主要包括人名、地名、機構名、專有名詞等,以及時間、數量、貨幣、比例數值等文字。指的是可以用專有名詞(名稱)標識的事物,一個命名實體一般代表唯一一個具體事物個體,包括人名、地名等。 — wiki

基本上就是可以抓出一些特定物件,人名、地名、機構名、專有名詞,之前也有抓過金額、日期、時間、金流渠道等。 這次的資料集則是只有人名、地名、機構名。

為求方便,這次我就改成使用 Kashgari 提供的ChineseDailyNerCorpus,安裝方式請看官網 或是透過pip

pip install kashgari

快速啟動

python3 bert_ner.py

訓練部分

訓練參數

這是Kashgari官方給的

batch_size: 2317
sequence_length: 100
epochs: 200

個人使用

train_batch_size = 16
eval_batch_size = 16
predict_batch_size = 16
learning_rate = 5e-5
num_train_epochs = 5

但由於我沒有機器跑那麼久,這次提供的結果我只跑了很少的部分

輸入資料

基本上規則滿簡單的

  1. 不需特別標註的字(非訓練目標),則標註成 O
  2. 需標註的字,首字使用  開頭,其餘自使用開頭
  3. 需標註的字,首字之後放標籤代號例如 組織名 -> B-ORG or I-ORG 其中一個

範例如下

內容 標註
B-ORG
I-ORG
I-ORG
I-ORG
O
B-ORG
I-ORG
I-ORG
I-ORG
I-ORG
I-ORG
I-ORG
I-ORG
O
O
O
O
O
O
O
O
O
O
O
O
O
O
B-ORG
I-ORG
I-ORG
I-ORG
I-ORG
I-ORG
I-ORG
I-ORG
I-ORG
I-ORG
I-ORG
I-ORG
I-ORG
I-ORG
I-ORG
O
O
O
O
O
O
O
B-ORG
I-ORG
I-ORG
I-ORG
I-ORG
I-ORG
I-ORG
I-ORG
I-ORG
I-ORG
O
O
O
O
O
O
O
O
O
O
O
O
O
B-ORG
I-ORG
I-ORG
O
O
O
O

查看一下 ChineseDailyNerCorpus 資料

from kashgari.corpus import ChineseDailyNerCorpus

train_x, train_y = ChineseDailyNerCorpus.load_data('train')
valid_x, valid_y = ChineseDailyNerCorpus.load_data('validate')
test_x, test_y  = ChineseDailyNerCorpus.load_data('test')

def load_data2set(set_x, set_y, max_num = 50000):
      data_set = []
      idx = 0
      sent_text,sent_slot="",""
      for label,ans in zip(set_x,set_y):
          idx+=1
          if idx > max_num and max_num !=-1:
            break
          sent_text = " ".join(label)
          sent_slot = " ".join(ans)
          data_set.append([sent_text,sent_slot])

      print("data_set: ",data_set[:50])
      return data_set
print(f"train data count: {len(train_x)}")
print(f"validate data count: {len(valid_x)}")
print(f"test data count: {len(test_x)}")


load_data2set(train_x[:10],train_y[:10])`

result:

train data count: 20864
validate data count: 2318
test data count: 4636
data_set:  [['这 是 古 代 乱 世 中 的 白 日 梦 : 在 山 间 清 流 中 荡 一 叶 扁 舟 独 行 , 穿 过 一 个 幽 暗 的 洞 口 , 眼 前 豁 然 开 朗 : 桃 花 林 夹 岸 , 芳 华 鲜 美 , 落 英 缤 纷 。', 'O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O'], ['大 街 上 摩 肩 接 踵 , 人 们 扶 老 携 幼 , 举 家 出 动 。', 'O O O O O O O O O O O O O O O O O O O O'], ['换 言 之 , 理 解 与 划 分 新 时 期 小 说 流 派 , 理 论 要 落 实 到 实 践 的 生 命 实 体 中 , 而 非 拿 实 践 去 迎 合 理 论 框 框 。', 'O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O'], ['受 外 界 因 素 的 影 响 , 今 天 菲 律 宾 比 索 对 美 元 的 汇 率 再 次 突 破 4 0 ∶ 1 防 线 。', 'O O O O O O O O O O O B-LOC I-LOC I-LOC O O O O O O O O O O O O O O O O O O O'], ['钟 添 发 同 时 还 宣 布 了 其 他 9 个 项 目 的 亚 运 会 目 标 。', 'B-PER I-PER I-PER O O O O O O O O O O O O O B-LOC O O O O O'], ['而 我 们 在 很 长 一 个 时 期 内 , 却 用 一 种 宗 派 主 义 的 态 度 来 对 待 外 国 史 学 , 这 就 使 我 们 的 史 学 故 步 自 封 , 知 识 结 构 老 化 。', 'O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O'], ['这 只 穿 兜 肚 、 哼 小 曲 、 舞 龙 头 的 鸭 子 淘 气 又 可 爱 , 能 用 一 支 神 笔 对 付 繁 重 的 功 课 , 用 橡 皮 泥 吹 出 “ 孩 子 乐 园 ” 。', 'O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O'], ['哥 伦 比 亚 大 学 的 研 究 人 员 通 过 对 这 个 家 族 进 行 脱 氧 核 糖 核 酸 检 测 和 利 用 实 验 鼠 进 行 实 验 , 发 现 在 第 八 个 染 色 体 的 某 个 区 域 存 在 一 种 脱 毛 基 因 。', 'B-ORG I-ORG I-ORG I-ORG I-ORG I-ORG O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O'], ['他 们 这 样 做 , 为 某 些 人 私 设 “ 小 金 库 ” 开 了 方 便 之 门 , 原 本 该 上 缴 国 家 的 税 款 有 可 能 装 进 个 人 的 腰 包 。', 'O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O'], ['而 具 有 创 新 头 脑 的 人 才 要 靠 教 育 来 培 养 。', 'O O O O O O O O O O O O O O O O O O']]
[['这 是 古 代 乱 世 中 的 白 日 梦 : 在 山 间 清 流 中 荡 一 叶 扁 舟 独 行 , 穿 过 一 个 幽 暗 的 洞 口 , 眼 前 豁 然 开 朗 : 桃 花 林 夹 岸 , 芳 华 鲜 美 , 落 英 缤 纷 。',
  'O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O'],
 ['大 街 上 摩 肩 接 踵 , 人 们 扶 老 携 幼 , 举 家 出 动 。',
  'O O O O O O O O O O O O O O O O O O O O'],
 ['换 言 之 , 理 解 与 划 分 新 时 期 小 说 流 派 , 理 论 要 落 实 到 实 践 的 生 命 实 体 中 , 而 非 拿 实 践 去 迎 合 理 论 框 框 。',
  'O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O'],
 ['受 外 界 因 素 的 影 响 , 今 天 菲 律 宾 比 索 对 美 元 的 汇 率 再 次 突 破 4 0 ∶ 1 防 线 。',
  'O O O O O O O O O O O B-LOC I-LOC I-LOC O O O O O O O O O O O O O O O O O O O'],
 ['钟 添 发 同 时 还 宣 布 了 其 他 9 个 项 目 的 亚 运 会 目 标 。',
  'B-PER I-PER I-PER O O O O O O O O O O O O O B-LOC O O O O O'],
 ['而 我 们 在 很 长 一 个 时 期 内 , 却 用 一 种 宗 派 主 义 的 态 度 来 对 待 外 国 史 学 , 这 就 使 我 们 的 史 学 故 步 自 封 , 知 识 结 构 老 化 。',
  'O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O'],
 ['这 只 穿 兜 肚 、 哼 小 曲 、 舞 龙 头 的 鸭 子 淘 气 又 可 爱 , 能 用 一 支 神 笔 对 付 繁 重 的 功 课 , 用 橡 皮 泥 吹 出 “ 孩 子 乐 园 ” 。',
  'O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O'],
 ['哥 伦 比 亚 大 学 的 研 究 人 员 通 过 对 这 个 家 族 进 行 脱 氧 核 糖 核 酸 检 测 和 利 用 实 验 鼠 进 行 实 验 , 发 现 在 第 八 个 染 色 体 的 某 个 区 域 存 在 一 种 脱 毛 基 因 。',
  'B-ORG I-ORG I-ORG I-ORG I-ORG I-ORG O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O'],
 ['他 们 这 样 做 , 为 某 些 人 私 设 “ 小 金 库 ” 开 了 方 便 之 门 , 原 本 该 上 缴 国 家 的 税 款 有 可 能 装 进 个 人 的 腰 包 。',
  'O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O'],
 ['而 具 有 创 新 头 脑 的 人 才 要 靠 教 育 来 培 养 。',
  'O O O O O O O O O O O O O O O O O O']]

評估

eval_f = 0.7191007
eval_precision = 0.5988906
eval_recall = 0.9756849
global_step = 13040
loss = 20.316486

預測

有輸出一份結果 在 bert_ner/output/test_samples_results.xlsx裡面

模型預測 人工答案 內容
[CLS] [CLS] [CLS]
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
B-LOC B-LOC
I-LOC I-LOC
I-LOC I-LOC
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
[SEP] [SEP] [SEP]
[CLS] [CLS] [CLS]
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
O O
[SEP] [SEP] [SEP]
[CLS] [CLS] [CLS]

額外

去抓這邊的資料 改檔案名之後放到data/資料夾後也跑跑看,可能因為資料的關係,評估的效果更好

eval_f = 0.9072733
eval_precision = 0.85459185
eval_recall = 0.9898753
global_step = 23745
loss = 6.551677
參考資料:ProHiryu/bert-chinese-ner

Add a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *