获取二元模型中的前一个词
Get previous word in a bigram model
我正在尝试实现马尔可夫链,需要计算前一个词出现的概率。我创建了一个数据框并尝试了 mutate 和 for 循环。在这两种情况下,由于某种原因,它总是只返回第一个元素的前一个词。使用的数据框是
freq term
ball costs 1 ball costs
bat bal 1 bat bal
bat ball 1 bat ball
bread eggs 1 bread eggs
buy bread 1 buy bread
costs rupe 1 costs rupe
我写了一个函数来获取上一个
getPrevious <- function(term)
{
b <- strsplit(term,split=" ")
c <- unlist(b)
c[1]
}
我尝试了 mutate 和 for 循环。两者都只用第一行的前一个词填充所有行(见下文)
mutate(bigram, x= getPrevious(term))
而且我似乎只得到
freq term prob x
1 1 ball costs 0.0625 ball
2 1 bat bal 0.0625 ball
3 1 bat ball 0.0625 ball
4 1 bread eggs 0.0625 ball
5 1 buy bread 0.0625 ball
6 1 costs rupe 0.0625 ball
我不明白为什么它无法从每个术语中选择前一个词。我什至尝试了一个 for 循环来达到同样的效果。
我哪里错了?
谢谢
象头神
尝试使用函数:
getPrevious <- function(term)
{
sapply(strsplit(term,split=" "), head, 1)
}
您所做的是将列表中列的每个元素拆分,将其转移到一个向量中并获取该向量的第一个元素 ball
。而您需要拆分列表中列的每个元素,并且 取该列表每个元素的第一个单词。
我正在尝试实现马尔可夫链,需要计算前一个词出现的概率。我创建了一个数据框并尝试了 mutate 和 for 循环。在这两种情况下,由于某种原因,它总是只返回第一个元素的前一个词。使用的数据框是
freq term
ball costs 1 ball costs
bat bal 1 bat bal
bat ball 1 bat ball
bread eggs 1 bread eggs
buy bread 1 buy bread
costs rupe 1 costs rupe
我写了一个函数来获取上一个
getPrevious <- function(term)
{
b <- strsplit(term,split=" ")
c <- unlist(b)
c[1]
}
我尝试了 mutate 和 for 循环。两者都只用第一行的前一个词填充所有行(见下文)
mutate(bigram, x= getPrevious(term))
而且我似乎只得到
freq term prob x
1 1 ball costs 0.0625 ball
2 1 bat bal 0.0625 ball
3 1 bat ball 0.0625 ball
4 1 bread eggs 0.0625 ball
5 1 buy bread 0.0625 ball
6 1 costs rupe 0.0625 ball
我不明白为什么它无法从每个术语中选择前一个词。我什至尝试了一个 for 循环来达到同样的效果。
我哪里错了?
谢谢 象头神
尝试使用函数:
getPrevious <- function(term)
{
sapply(strsplit(term,split=" "), head, 1)
}
您所做的是将列表中列的每个元素拆分,将其转移到一个向量中并获取该向量的第一个元素 ball
。而您需要拆分列表中列的每个元素,并且 取该列表每个元素的第一个单词。