问题标签 [python-crfsuite]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
304 浏览

python - 从 python CRFSuite 获取混淆矩阵的最简单方法是什么?

我正在尝试从python CRFsuite获取混淆矩阵。

这是我的代码:

错误:

我尝试使用MultiLabelBinarizer(),但仍然无法获得混淆矩阵。

在谷歌搜索后,我找到了这个答案,它说对于混淆矩阵函数,你必须展平y_testand pred_y我在这里查看了 CRFsuite 的其他指标的源代码,它们确实使用了一个 fallaten 函数:

但是没有获取confusion matrix.

和是y_test嵌套pred_y列表。

如何展平y_testandpred_y以获得混淆矩阵?

谢谢你。

0 投票
0 回答
46 浏览

python - 是否可以使用条件随机字段模型来训练命名实体识别以获取安全咨询数据?

我要使用的数据集来自 Adob​​e 产品的安全咨询和安全公告。网站链接https://helpx.adobe.com/cy_en/security.html/security/security-bulletin.ug.html。但是,我假设我不需要做注释部分,我认为我可以继续进行命名实体识别。这是因为提取的数据已经排列好。

我选择的数据集是:

这是以 csv 格式提取的数据集的示例

发布日期 漏洞_id CVE_numbers 受影响的软件
2008 年 5 月 6 日 APSA08-05 CVE-2008-1201 后效果 CS3
2019 年 8 月 13 日 APSB19-31 CVE-2019-8062 后遗症
- - CVE-2020-3765 后遗症

我的问题是,是否可以使用条件随机字段模型来训练命名实体识别以获取安全咨询数据?如果是,我如何选择最佳特征选择来识别使用 IOB 编码或任何其他建议的相关实体?

0 投票
0 回答
13 浏览

crf - CRFsuite 训练太慢

我在 CRFsuite 上训练 NER,但速度太慢(9 小时以上)。我的火车数据包括 66436 个句子,平均每个句子有 57 个标记。我的测试数据包括 1365 个句子,平均 24 个标记/句子。我只放了7个特征。输出只有 13 个标签。

我在 Colab Pro 上运行。

0 投票
0 回答
30 浏览

python - 如何处理 sklearn / sklearn_crfsuite 中的顺序文本数据?

我正在研究自然语言处理,尤其是文本中的句子边界检测 (SBD)。目前,我想建立自己的基于条件随机场的 SBD 模型,因为我读过 CRF 是序列标记的一个很好的起点。作为包,我使用 sklearn_crfsuite 并按照教程 ( https://sklearn-crfsuite.readthedocs.io/en/latest/tutorial.html ) 进行实施。我的想法是标记文本并为每个标记分配一个标签。作为标签,我使用 B(用于句子的开头)、E(用于句子的结尾)和 O(用于其他,所以在句子中)。我有 6 个带句子边界的带注释文本。例如,我的火车数据如下所示:

使用 X_train 和 y_train 作为包含 6 个文本中的所有数据的平面列表来训练 CRF 是否正确?或者训练数据必须看起来像这样,在 X_train、y_train 列表中的每个句子都有一个条目?

0 投票
1 回答
45 浏览

python - 如何在由一个列表组成的嵌套列表上使用 RandomizedSearchCV?

我已经建立了一个句子边界检测分类器。对于序列标记,我使用了条件随机场。对于超参数优化,我想使用 RandomizedSearchCV。我的训练数据包含 6 个带注释的文本。我将所有 6 个文本合并到一个令牌列表。对于实现,我遵循了文档中的示例。这是我的简化代码:

我使用rs.fit([X_train], [y_train])而不是rs.fit(X_train, y_train)因为 crf.train 的文档说它需要一个列表列表:

但是使用列表列表我得到这个错误:

ValueError: Cannot have number of splits n_splits=5 greater than the number of samples: n_samples=1

我知道这是因为我分别使用 [X_train] 和 [y_train] 并且无法将 CV 应用于由一个列表组成的列表,但是 X_train 和 y_train crf.fit 无法应对。我怎样才能解决这个问题?