问题标签 [text-chunking]
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.
python - 如何从 BIO 分块句子中提取块?- Python
给出一个具有BIO 块标签的输入句子:
[('What', 'B-NP'), ('is', 'B-VP'), ('the', 'B-NP'), ('airspeed', 'I-NP'), ( 'of', 'B-PP'), ('an', 'B-NP'), ('unladen', 'I-NP'), ('swallow', 'I-NP'), ('? ', 'O')]
我需要提取相关的短语,例如,如果我想提取'NP'
,我需要提取包含B-NP
and的元组片段I-NP
。
[出去]:
(注意:提取元组中的数字代表令牌索引。)
我尝试使用以下代码提取它:
但是当我有相同类型的相邻块时:
它输出这个:
而不是所需的:
如何从上面的代码中解决这个问题?
除了从上面的代码中如何完成之外,是否有更好的解决方案来提取特定的所需块chunk_type
?
elasticsearch - 使用 Completion Suggester 匹配查询中的所有 ngram
我想知道是否可以使用Elasticsearch 的 Completion Suggester来匹配查询中的所有 ngram。
我基本上想做的是“滥用”完成建议来做“基于字典的分块”。
例如给出句子:“巴黎疯马俱乐部今天营业到几点?”
我想输入上面的整个句子作为对“完成建议”的查询,并取回索引的“疯马俱乐部”而不是“马俱乐部”,即使两者都可以被索引。即:如果术语有重叠,则只应返回最大的 ngram。
这可能开箱即用吗?如果没有,关于在哪里寻找的任何方向(有或没有 Elasticsearch)?
similarity - 分块文件以测试抄袭
我正在为文本文件构建一个抄袭检查器。我做了所有预处理(停用词删除、词干提取等)并建立我的索引。和过滤结果。系统差不多完成了。当我测试结果时,我按句子对语料库和用户文档进行了分块(句子分隔符是。?!)我注意到分块方法(按句子)并不强大,因为用户可能会更改标点符号来欺骗我的服务。我读了很多关于分块的文章,最好的方法是 K-words重叠,这意味着按照单词的数量进行分割,重叠。我的问题是,在这种情况下如何计算用户块和语料库块之间的相似度,因为重叠的单词会使相似度最大化。
示例:(忽略词干和停用词删除)这里的词数 = 4,重叠 = 1 个词(可能会更改)
用户句子= 我如何在您的语料库中找到类似的句子。
chunks = 我怎么能找到,我能找到相似的,我找到相似的句子,找到相似的句子,你的相似句子,你的语料库中的句子。
现在,当我针对语料库测试这些块时(让语料库有一个块说:我怎么能找到)你注意到用户块(我怎么能找到,我能找到相似的)与语料块有相似性,但两个用户块是多余的。那么我怎样才能消除这种冗余,抱歉解释太长了。
python - 如何使用 nltk 正则表达式模式来提取特定的短语块?
我写了以下正则表达式来标记某些短语模式
此模式将正确标记一个短语,例如:
并用 2 个短语给出所需的输出:
- 披萨很好
- 意大利面很糟糕
但是,如果我的句子是这样的:
仅匹配以下短语:
而不是想要的:
我如何也为我的第二个示例合并正则表达式模式?
itextsharp - itextsharp:将文本块拆分为单词时单词被破坏
我想突出显示一组 PDF 文件中的几个关键字。首先,我们必须识别单个单词并将它们与我的关键字匹配。我找到了一个例子:
但是,我发现很多单词都坏了。例如,“stop”将是“st”和“op”。还有其他方法可以识别单个单词及其位置吗?
python - NLTK RegEx Chunker 未使用通配符捕获已定义的语法模式
我正在尝试使用 NLTK 的 POS 标签作为正则表达式来分块一个句子。根据句子中单词的标签,定义了 2 条规则来识别短语。
主要是,我想捕捉一个或多个动词的块,后跟一个可选的限定词,然后是一个或多个名词。这是定义中的第一条规则。但它并没有被捕获为短语块。
分块器 tagged_text 的输入如下。
tagged_text Out[7]: [('This', 'DT'), ('has', 'VBZ'), ('allowed', 'VBN'), ('the', 'DT'), ('device ', 'NN'), ('to', 'TO'), ('start,', 'NNP'), ('and', 'CC'), ('I', 'PRP'), (' then', 'RB'), ('see', 'VB'), ('glitches', 'NNS'), ('which', 'WDT'), ('is', 'VBZ'), ('不', 'RB'), ('nice.', 'NNP')]
在最终输出中,仅捕获与第二条规则匹配的副词短语(' then see ')。我希望口头短语(' allowed the device ')与第一条规则匹配并被捕获,但事实并非如此。
actphrases Out[8]: Tree('S', [('This', 'DT'), ('has', 'VBZ'), ('allowed', 'VBN'), ('the', 'DT '), ('device', 'NN'), ('to', 'TO'), ('start,', 'NNP'), ('and', 'CC'), ('I', ' PRP'), Tree('Ph', [('then', 'RB'), ('see', 'VB')]) , ('glitches', 'NNS'), ('which', 'WDT '), ('is', 'VBZ'), ('not', 'RB'), ('nice.', 'NNP')])
使用的 NLTK 版本是 2.0.5 (Python 2.7) 任何帮助或建议将不胜感激。
提前致谢,
巴拉。
python - 使用 nltk.tag.brill_trainer 训练 IOB Chunker(基于转换的学习)
我正在尝试通过使用NLTK 的 brill 模块来训练特定的分块器(为简单起见,我们说一个名词分块器)。我想使用三个功能,即。词,POS-标签,IOB-标签。
(Ramshaw and Marcus, 1995:7)展示了 100 个模板,这些模板是从这三个特征的组合中生成的,例如,
/li>
我想将它们合并到nltk.tbl.feature
中,但只有两种特征对象,即。brill.Word
和brill.Pos
。受限于设计,我只能像 (word, pos) 这样将 word 和 POS 特征放在一起,因此使用 ( (word, pos), iob) 作为特征进行训练。例如,
如上所示,(word, pos) 将一个特征视为一个整体。这不是对三个特征(word、pos-tag、iob-tag)的完美捕捉。
- 还有其他方法可以将 word、pos、iob 功能分别实现到 中
nltk.tbl.feature
吗? - 如果在 NLTK 中不可能,那么在 python 中是否还有其他实现?我只能在 Internet 上找到 C++ 和 Java 实现。
python - 如何使用 NLTK RegexpParser Chunk 为 Python 中的 POS_tagged 词提取特殊字符
例如,我有一些文字说:80% of $300,000 Each Human Resource/IT Department.
我需要$300,000
连同单词一起提取Each Human Resource/IT Department
我在标记化后使用 pos 标记来标记单词。我能够提取 300,000 但无法同时提取 $ 符号。
到目前为止我所拥有的:
转换为列表时的分块输出 -['80 %', '300,000', 'Each Human Resource/IT Department']
我想要什么:['80 %', '**$**300,000', 'Each Human Resource/IT Department']
我试过
chunkGram = r"""chunk: {**</$CD>|**<DT>+<NN.*>+<NN.*>?|<NNP>?|<CD>+<NN>?|
?}"""
它仍然不起作用。所以,我只需要一张$和CD
java - 如何在 Opennlp 中训练 Chunker?
我需要在 Opennlp 中训练 Chunker,将训练数据分类为名词短语。我该如何进行?在线文档没有解释如何在没有命令行的情况下执行此操作,并包含在程序中。它说使用 en-chunker.train,但你如何制作该文件?
编辑:@Alaye 运行您在答案中提供的代码后,我收到以下无法修复的错误:
(我的 en-chunker.train 只有你的样本数据集的前 2 行和最后一行。)你能告诉我为什么会发生这种情况以及如何解决它吗?
EDIT2:我让 Chunker 工作,但是当我将训练集中的句子更改为您在答案中给出的句子之外的任何句子时,它会出错。你能告诉我为什么会这样吗?
java - OpenNLP 如何为解析器分块创建模型
我正在尝试使用 OpenNLP 用葡萄牙语创建解析器分块。但我没有成功。
我认为创建模型需要两个文件:
一个带有 train.all 扩展名和格式的培训文件:
/li>一个带有 headRules 名称的规则文件。我的文件包含从互联网上获取的这些规则。
/li>
我使用此命令生成模型 en-parser-chunking.bin
所以,我使用这个模型 en-parser-chunking.bin 来处理解析器。按照代码:
运行代码时,出现以下错误:
如何创建模型 parser-chunking.bin?