问题标签 [crf]
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.
machine-learning - 使用 CRF 识别文档的特定部分
我的目标是给定一组文档(主要是金融领域),我们需要识别其中的特定部分,例如公司名称或文档类型等。
假设培训是在 100 份文件上完成的。显然,我会有一个倾斜的类分布(None 在大约 99.9% 的示例中占主导地位)。我计划使用 CRF(Sklearn 上的 CRFsuite)并阅读了必要的文献。我需要一些关于以下方面的建议:
数据集是否足以训练 CRF?考虑到每个文档可以分成大约 100 个标记(每个标记是一个训练实例),我们总共会得到 10000 个实例。
- 训练 CRF 的数据集是否会过于倾斜?例如:对于 100 个文档,我将有大约 400 个给定类的实例和大约 8000 个无实例
java - Mallet SimpleTagger 不同数量的谓词
我正在尝试此处SimpleTagger
提供的教程。我已经运行了与页面上提供的完全相同的命令,即
java -cp "class:lib/mallet-deps.jar" cc.mallet.fst.SimpleTagger --train true --model-file nouncrf sample
和
java -cp "class:lib/mallet-deps.jar" cc.mallet.fst.SimpleTagger --model-file nouncrf stest
.
这是我的sample
和stest
文件。
$ cat sample
$ cat stest
但是,我的输出与他们页面上的输出不同。这是我得到的输出。
我的问题是
- “谓词的数量”是什么意思?
- 为什么我得到 9 个谓词,而官方消息来源声称相同输入文件有 5 个谓词?
如果这很重要,我正在使用 Mallet 2.0.8。
opennlp - 如何创建基于地名词典的命名实体识别(NER)系统?
我已经尝试过许多 NER 工具(OpenNLP、Stanford NER、LingPipe、Dbpedia Spotlight 等)。
但是,我经常回避的是一个基于地名词典/字典的 NER 系统,其中我的自由文本与预定义的实体名称列表匹配,并返回潜在的匹配项。
通过这种方式,我可以拥有各种列表,例如 PERSON、ORGANIZATION 等。我可以动态更改列表并获得不同的提取。这将极大地减少训练时间(因为它们中的大多数都基于最大熵模型,因此它们通常包括标记大型数据集、训练模型等)。
我使用 OpenNLP POS 标记器构建了一个非常粗糙的基于地名词典的 NER 系统,我曾经从中取出所有专有名词 (NP),然后在从我的列表创建的 Lucene 索引中查找它们。然而,这给了我很多误报。例如。如果我的 lucene 索引有“Samsung Electronics”并且我的 POS 标记器给了我“Electronics”作为 NP,我的方法将返回“Samsung Electronics”,因为我正在进行部分匹配。
我还读到人们谈论使用地名词典作为 CRF 算法中的一个功能。但我永远无法理解这种做法。
你们中的任何人都可以指导我采用一种清晰而可靠的方法,在地名词典和字典上构建 NER 吗?
scikit-learn - 在 Keras 中使用 CRF 的 LSTM
我真的不明白如何结合 sklearn_crfsuite 和 Keras。
我必须制作一个经典的 LSTM,而不是最后一个 Activation,我使用 sklearn_crfsuite?
有人有例子吗?
谢谢,
nlp - CRF++:任何人都明白 CRF 模型文件中的浮点数是什么意思
当您通过 crf_learn 使用 -t 选项构建模型文件时:crf_learn template train_data -t model
然后它会生成两个模型文件,其中一个是model.txt。
谁能告诉浮点数是什么意思?
请参见以下示例:
版本:100 成本因素:1 最大:40 xsize:1
乙
U00:%x[0,0] B
36 B 20 U00:、 26 U00:か 18 U00:が 22 U00:こ 8 U00:た 10 U00:ち 2 U00:っ 4 U00:て 34 U00:に 12 U00:の 0 U00:よ 28 U00:ら24 U00:れ 32 U00:上 14 U00:世 16 U00:代 30 U00:地 6 U00:私</p>
-0.3022268562246992 0.3022268562246989 -0.3629407244093161 0.3629407244093156 -0.3327259487028221 0.3327259487028215 0.3462799099537973 -0.3462799099537980 0.3452020097664334 -0.3452020097664336 -0.3218750203631590 0.3218750203631575 0.0376944272290242 -0.0376944272290280 0.3329631783491211 -0.3329631783491230 -0.3092967308014029 0.3092967308014015 0.3413769126433928 -0.3413769126433950 0.3786782765859961 -0.3786782765859980 0.5208645073272351 -0.5208645073272384 -0.3261580548802839 0.3261580548802814 -0.3615756495615902 0.3615756495615884 -0.3248593224319323 0.3248593224319312 0.3281895709166696 -0.3281895709166719 -0.3040331359589971 0.3040331359589951 0.2836939567332580 -0.2836939567332600 -0.1530917919770705 -0.1613508585854637 0.4245699543724943 -09901273038
我的理解是:每个浮点数应该对应每个模板,例如:第一个浮点数“-0.3022268562246992”应该对应“36 B”。但是为什么浮点数的数量是模板数量的两倍呢?这些浮点数是什么意思?
非常感谢,
帅华
python-3.x - 构建 CRF-RNN tensorflow 实现
在尝试在 tensorflow 中将 CRF 实现为 RNN 时,根据此处的说明:https ://github.com/liangy1969/CRF-RNN_Tensorflow ,我在下面遇到了错误。
在我上面给出的链接中,liangy1969 已经提供了 permutohedral.py 和 _permutohedral...pyd,但是直接尝试使用它们在这里给出了问题:https ://github.com/liangy1969/CRF-RNN_Tensorflow/issues/1它是得出结论,原因可能是文件是在win64中编译的,每个文件都需要自己构建。但是在构建时我得到了上面的错误。
另外,在 setup.py 中,这个家伙给出了以下声明: include_dirs=['$PYTHON_PATH/Lib/site-packages/numpy/core/include']
我在 site-packages 下找不到我的 python_path 或任何 numpy/core/include 但我在 /usr/local/lib/python3.5/dist-packages 下找到了 numpy/core/include 所以我从 site-包到 dist 包。我不知道这是否正确,不幸的是我还不是 python 或 linux 环境的专家。可能会发生我的一个非常愚蠢的错误,以防万一。
我正在使用 python3(3.5)和 tensorflow r1.3(如果需要)和 ubuntu 16.04。任何人都可以帮忙吗?谢谢。
stanford-nlp - 斯坦福 CRFClassifier 性能评估输出
我正在关注这个常见问题解答https://nlp.stanford.edu/software/crf-faq.shtml来训练我自己的分类器,我注意到性能评估输出与结果不匹配(或者至少不以我的方式预计)。特别是本节
CRFClassifier tagged 16119 words in 1 documents at 13824.19 words per second.
Entity P R F1 TP FP FN
MYLABEL 1.0000 0.9961 0.9980 255 0 1
Totals 1.0000 0.9961 0.9980 255 0 1
我希望TP
是预测标签与黄金标签匹配的FP
所有实例,MYLABEL
是预测但黄金标签是 的O
所有实例,是预测但黄金标签是FN
的所有实例。O
MYLABEL
如果我自己根据程序的输出计算这些数字,我会得到完全不同的数字,与程序打印的内容无关。我已经用各种测试文件试过了。我在用着Stanford NER - v3.7.0 - 2016-10-31
我错过了什么吗?
nlp - 训练 Stanford-NER-CRF,控制迭代次数和正则化(L1,L2)参数
我正在查看 StanfordNER 文档/常见问题解答,但我找不到与指定训练中的最大迭代次数以及正则化参数 L1 和 L2 的值相关的任何内容。
我看到了一个建议设置的答案,例如:
maxIterations=10
在属性文件中,但没有给出任何结果。
可以设置这些参数吗?