jiesutd / LatticeLSTM

Chinese NER using Lattice LSTM. Code for ACL 2018 paper.
1.79k stars 457 forks source link

关于对自己的文本进行命名实体识别的效果 #12

Closed Roshanson closed 6 years ago

Roshanson commented 6 years ago

你好,我尝试用训练好的模型对一些外部的文本进行命名实体识别。

我发现加载的文本不能是普通的文字序列,需要处理为 char lable 一行这样的格式。 而且句子之间需要有空行。(句子长度是否有限制?)

然后我发现结果基本没有识别出我的句子中的实体。 我用的训练数据集即为ResumeNER数据集,不知效果较差是否和这个训练数据集有关。

运行命令:

python main.py --status decode --raw ./data/bioes2.txt --savedset ./data/saved_model.dset -- loadmodel ./data/saved_models/saved_model.35.model --output ./data/res.out

bioes2.txt为需要命名实体识别的文本内容

res.out 为命名实体识别的结果

bioes2.txt的内容如下: 东 B-LOC 光 E-LOC 铁 E-LOC 佛 E-LOC 寺 E-LOC 位 O 于 O 沧 B-LOC 州 E-LOC 市 E-LOC 东 B-LOC 光 E-LOC 县 E-LOC 县 O 城 O 内 O , O 是 O 沧 B-LOC 州 E-LOC 最 O 著 O 名 O 的 O 佛 B-LOC 教 E-LOC 寺 E-LOC 院 O , O 已 O 有 O 千 O 年 O 历 O 史 O , O 在 O 沧 B-LOC 州 E-LOC 当 O 地 O 自 O 古 O 就 O 有 O “ O 沧 B-LOC 州 E-LOC 狮 B-LOC 子 E-LOC 景 E-LOC 州 E-LOC 塔 E-LOC , O 东 B-LOC 光 E-LOC 县 E-LOC 的 O 铁 B-LOC 菩 E-LOC 萨 E-LOC ” O 的 O 说 O 法 O , O 很 O 多 O 当 O 地 O 人 O 拜 O 佛 O 祈 O 福 O 都 O 会 O 选 O 择 O 这 O 里 O 。 O 铁 B-LOC 佛 E-LOC 寺 E-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 铁 B-LOC 佛 E-LOC 寺 E-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 铁 B-LOC 佛 E-LOC 寺 E-LOC 依 O 然 O 香 O 火 O 旺 O 盛 O 。 O 在 O 铁 B-LOC 佛 E-LOC 寺 E-LOC 内 O 游 O 玩 O 时 O , O 可 O 以 O 着 O 重 O 观 O 看 O 寺 O 内 O 的 O 巨 O 大 O 铁 O 佛 O , O 铁 O 佛 O 高 O 约 O 8 O 米 O 多 O , O 非 O 常 O 壮 O 观 O 。 O 寺 O 内 O 另 O 有 O 多 O 座 O 佛 B-LOC 殿 E-LOC , O 都 O 可 O 以 O 一 O 一 O 参 O 观 O 。 O 另 O 外 O 还 O 有 O 京 B-LOC 剧 O 名 O 旦 O 荀 O 慧 O 生 O 的 O 纪 B-LOC 念 E-LOC 馆 E-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 1 O 0 O

res.out 的结果如下: 东 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 教 M-ORG 寺 M-ORG 院 E-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 0 O 米 O 多 O , O 非 O 常 O 壮 O 观 O 。 O

寺 O 内 O 另 O 有 O 多 O 座 O 佛 O 殿 O , O 都 O 可 O 以 O 一 O 一 O 参 O 观 O 。 O

另 O 外 O 还 O 有 O 京 O 剧 O 名 O 旦 O 荀 O 慧 O 生 O 的 O 纪 O 念 O 馆 O , O

可 O 以 O 进 O 入 O 了 O 解 O 一 O 下 O 。 O

在 O 寺 O 内 O 上 O 香 O 、 O 磕 O 头 O 时 O , O

一 O 般 O 会 O 被 O 要 O 求 O 给 O 一 O 点 O 香 O 火 O 钱 O , O

每 O 人 O 0 O 0 O

" O 沧 O 州 O 民 O 谣 O : O “ O 一 O 文 O 一 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-TITLE 者 E-TITLE , O 是 O 沧 O 州 O 乃 O 驰 O 名 O 中 O 外 O 的 O 武 O 术 O 之 O 乡 O , O

国 O 宝 O 指 O 沧 O 州 O 铁 O 狮 O , O

人 O 祖 O 即 O 盘 O 古 O , O 盘 O 古 O 遗 O 址 O 就 O 在 O 今 O 沧 O 州 O 市 O 所 O 属 O 的 O 青 O 县 O 境 O 内 O 。 O

青 O 县 O 城 O 南 O 0 O 公 O 里 O 有 O 村 O 曰 O “ O 大 O 盘 O 古 O ” O , O 村 O 西 O 有 O 座 O 盘 O 古 O 庙 O 。 O

jiesutd commented 6 years ago
  1. 输入的句子之间要有空行隔开。 2.效果不好的主要原因是你的训练数据是简历Resume数据,因而对你的新领域的数据效果不好很正常。cross domain labeling 本身就是个问题。
Roshanson commented 6 years ago

嗯 的确领域差别比较大,我重新在用msra的数据进行训练试试。。 不过训练速度的确有点慢 有一点比较困惑,就是为什么输入不是字符就可以了,还要带有一个 lable 类似 县 E-LOC 这样的格式。

jiesutd commented 6 years ago

为了处理方便。对于生语料,直接在后面pad一个O 就行了

Roshanson commented 6 years ago

好的 谢谢~~

MrRace commented 6 years ago

@jiesutd 直接拿新语聊训练的话,是要先训练Embeddings吧?否则跨领域的很多词有些词直接OOV了。

jiesutd commented 6 years ago

可以都试试,这个说不准。基于字的oov可能不会太高,因为中文的字的数量很有限。word embedding 也会有影响。

MrRace commented 6 years ago

所以,主要还是标注数据上的差异?那么@jiesutd 财经数据,有更加全面的标注数据吗?只有简历的标注数据,确实很难泛化。

jiesutd commented 6 years ago

@MrRace 依然是具体任务具体对待,财经数据这个说法太笼统,我的这个上市公司高管简历数据也算一种财经数据。不同人关注的财经方面的数据源、entity 种类和定义都不一样。我不知道有什么出名的财经NER数据。如果想自己做东西的话,自己标一部分数据或许更灵活有效。如果自己标注NER语料的话,可以试试我的YEDDA这个工具https://github.com/jiesutd/YEDDA