k skipgram是ngram,它是所有ngrams和每个(ki)skipgram的超集,直到(ki)== 0(包括0跳过克).那么如何在python中有效地计算这些跳过头文件呢?
以下是我尝试的代码,但它没有按预期执行:
<pre>
input_list = ['all', 'this', 'happened', 'more', 'or', 'less']
def find_skipgrams(input_list, N,K):
bigram_list = []
nlist=[]
K=1
for k in range(K+1):
for i in range(len(input_list)-1):
if i+k+1<len(input_list):
nlist=[]
for j in range(N+1):
if i+k+j+1<len(input_list):
nlist.append(input_list[i+k+j+1])
bigram_list.append(nlist)
return bigram_list
</pre>
Run Code Online (Sandbox Code Playgroud)
上面的代码无法正确呈现,但print find_skipgrams(['all', 'this', 'happened', 'more', 'or', 'less'],2,1)提供以下输出
[['this','发生','更多'],['发生','更多','或',['更多','或','更少'],['或','更少'',['less'],['发生','更多','或'],['更多','或','更少',['或','更少'],['更少'], ['减']]
此处列出的代码也没有给出正确的输出:https: //github.com/heaven00/skipgram/blob/master/skipgram.py
print skipgram_ndarray("你叫什么名字")给出:['什么,是','是,你的','你的名字','名字','什么,你的','是,名字']
名字是一个unigram!