问题标签 [viterbi]

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 投票
0 回答
777 浏览

r - if (d < delta) { 中的 HMM 错误:需要 TRUE/FALSE 的缺失值

我对 HMM 包中的 viterbiTraining 函数有一些问题。我尝试在一个非常简单的嗯和一个观察向量上使用它。

这是代码:

Emisije 向量如下所示:

头(埃米西耶)

[1] “区间 A” “区间 A” “区间 A” “区间 C” “区间 B” “区间 A”

运行后一切正常,除了 viterbiTraining 函数,它给出以下结果:

viterbiTraining(stanji,Emisije)

if (d < delta) { 中的错误:需要 TRUE/FALSE 的缺失值

即使采用完全相同的参数的类似函数 baumWelch 也可以正常工作,所以我真的不明白这里出了什么问题。

谁能向我解释我做错了什么?先感谢您。

0 投票
0 回答
339 浏览

algorithm - HMM 中的前 k-最佳路径,其中 k > 隐藏状态数

我已经实现了一个 k-best Viterbi 算法,以便通过 HMM 提取 k-best 路径,如此所述。但是,如果k大于隐藏状态的数量,我会收到错误消息。

考虑以下内容:在时间t的第一次观察中,每个状态j的每个k都是相同的(即到该状态的所有路径都是相同的,因为这是第一次观察)。然后,我想计算状态i在时间t+1的 k 最佳路径。为了做到这一点,我在时间t提取了 k-best 前驱路径。但是,由于t时每个状态的所有路径都是相同的,因此我的状态i最终得到相同的最佳前导状态k次(这同样适用于时间t+1的所有状态)。这有效地导致所有路径都是相同的路径(第一最佳)。

正如文献中所建议的那样,我在寻找 k-best 前驱状态时忽略了已经采用的路径。然而,这实际上让我在时间t有N条不同的路径,其中N指的是隐藏状态的数量。因此,在时间t寻找 k 最佳前导路径时,选择大于N的k会导致错误。

我希望我试图表达的观点得到通过。显然,我在这里遗漏了一些东西,但我无法弄清楚是什么。

0 投票
3 回答
876 浏览

classification - 基本隐马尔可夫模型,维特比算法

我对隐马尔可夫模型相当陌生,我正试图围绕该理论的一个非常基本的部分展开思考。

我想使用 HMM 作为分类器,因此,给定数据的时间序列,我有两个类:背景和信号。

如何估计每个类别的排放概率?维特比算法是否需要背景和信号的模板来估计概率(数据|状态)?还是我完全错过了重点?

0 投票
2 回答
776 浏览

c# - 如何在 C# 中实现 Viterbi 算法来拆分连词?

简而言之 - 我想将这里问题的第一个答案从 Python 转换为 C#。我目前拆分连词的解决方案是指数级的,我想要一个线性解决方案。我假设我的输入文本中没有间距和一致的大小写。

背景

我希望将诸如“wickedweather”之类的连体字符串转换为单独的单词,例如使用 C# 的“wicked weather”。我创建了一个可行的解决方案,一个使用指数时间的递归函数,这对于我的目的来说根本不够有效(处理至少超过 100 个连接词)。这里是我到目前为止阅读的问题,我认为这可能会有所帮助,但我无法将他们的回答从 Python 转换为 C#。

我当前的递归解决方案

这适用于只想在 C# 中拆分几个单词(< 50)并且并不真正关心效率的人。

我当前的解决方案计算出所有可能的单词组合,找到最可能的输出和显示。我目前将最可能的输出定义为使用最长单个单词的输出 - 我更愿意使用不同的方法。这是我当前的解决方案,使用递归算法。

该算法依赖于条目文本中没有空格或其他符号(这里不是真正的问题,我不关心拆分标点符号)。在字符串中添加的随机附加字母可能会导致错误,除非我将字母表中的每个字母都存储为字典中的“单词”。这意味着“wickedweatherdykjs”将使用上述算法返回“wicked weather dykj s”,而我更喜欢“wicked weather dykjs”的输出。

我更新的指数解决方案:

我想如何使用维特比算法

我想创建一个算法,它可以为联合字符串找出最可能的解决方案,其中概率是根据我提供算法的文本文件中单词的位置计算的。假设该文件首先以英语中最常用的单词开头,下一行是第二常用的单词,依此类推,直到我的字典中最不常用的单词。大致是这样的

  • ...
  • 律师

这是我想使用的此类文本文件的一个小示例的链接。 这是我想使用的更大的文本文件

这个文件定位背后的逻辑如下……

可以合理地假设它们遵循 Zipf 定律,即单词列表中排名为 n 的单词的概率大约为 1/(n log N),其中 N 是字典中的单词数。

Generic Human,在他出色的 Python 解决方案中,比我能更好地解释这一点。我想将他对问题的解决方案从 Python 转换为 C#,但是经过数小时的尝试后,我无法产生一个可行的解决方案。我也对这样的想法持开放态度,即维特比算法的相对频率可能不是拆分单词的最佳方法,还有其他关于使用 C# 创建解决方案的建议吗?

0 投票
0 回答
1794 浏览

c++ - 如何使用 GNU Radio 库中的 Viterbi 解码器

我需要对一些卷积编码信号进行维特比解码。我的应用程序适用于大文件,因此我无法将所有信号插入堆中,因此我需要通过一系列单独的缓冲区来处理数据。我找到了一个很好的维特比解码库——在博士的 C++ 中的编码器和维特比解码器。多布斯。我已经应用了库中的解码器,它工作正常,但没有提供连续使用的功能(考虑到先前的计算,为每个信号缓冲区多次调用一个函数)。然后我找到了 提供必要功能的GNU Radio C++ 库。但我不明白如何使用它的功能,因为它不提供文档。它包含维特比解码的例子如下:

其中的文件viterbi.c还包含下一个函数viterbi(),但没有声明:

我还发现了 Viterbi 解码的另一种实现方式 -螺旋项目。但它也不包含正常的描述,也不想编译。ExpertCore前向纠错 DSP 库还有两个实现。

我的问题:谁能理解如何使用上述 GNU Radio 的 Viterbi 算法实现连续用于二进制交错数字信号(我的信号的编码器参数:K=7 rate=1/2,我文件中的每一位都是解调的信号样本)?

0 投票
1 回答
772 浏览

parsing - What is the difference between Viterbi CYK and Probabilistic CYK algorithm, Is there any differences?

I think they are the same concept, https://courses.engr.illinois.edu/cs498jh/Slides/Lecture10.pdf Probabilistic CYK algorithm is used the viterbi algorithm to parse, is my concept is correct?

0 投票
0 回答
99 浏览

nlp - 使用哪个标签集来训练 POS 标注器?

我正在使用 Viterbi 算法和 Trigram 语言模型设计一个简单的词性标注器。我如何决定使用哪个标签集进行训练?(英语的词性标注器)

0 投票
1 回答
182 浏览

python - ViterbiParser 和 ChartParser 为 NLTK 中的 PCFG 返回 None

我正在尝试使用 ViterbiParser 和 ChartParser 来解析句子“Birds fly”。跟踪过程,似乎它应该工作,但总是返回None

这是痕迹。(维特比):

图表解析器:

两个解析器似乎都正确地构建了句子,但仍然返回 None。这是怎么回事?

0 投票
0 回答
65 浏览

r - 维特比算法后处理

我在学校运行具有 2 个隐藏状态的隐马尔可夫模型项目的脚本。在某些时候,我使用维特比算法来找到最合适的隐藏状态序列。我的输出是这样的向量:

我想计算每个状态有多少个子序列,并记录它们的长度和位置。例如,输出将是这样的 matrx:

是否有任何 R 命令或包可以轻松做到这一点?

谢谢你。

0 投票
2 回答
49 浏览

algorithm - 如何从另一个文本文件中的一个文本文件中找到与字符串匹配的字符串?

我有两个文本文件。两者的内容相同,但格式不同。在一个文件中,单词或字母之间有多余的空格。也有不同的换行符。例如:

文件1:

文件2:

假设我the Knowledge Management从 File1 中选择了字符串,并且我想将它与th e K n o w l e d ge ManagementFile2 中的字符串匹配。

我怎样才能实现它?第二个文件中没有固定的畸形。唯一可以确定的是,两个文件中的字符顺序相同,它们可能被额外的空格分隔,或者它们之间的空格可能丢失。

我想应用卖方算法或维特比算法,但我不确定。近似字符串匹配也可能很昂贵。

任何线索都会有所帮助。非常感谢!