零散问题:
1)编辑距离
def minEditDist(sm,sn):
m,n = len(sm)+1,len(sn)+1
# create a matrix (m*n)
matrix = [[0]*n for i in range(m)]
matrix[0][0]=0
for i in range(1,m):
matrix[i][0] = matrix[i-1][0] + 1
for j in range(1,n):
matrix[0][j] = matrix[0][j-1]+1
for i in range(m):
print matrix[i]
print "********************"
cost = 0
for i in range(1,m):
for j in range(1,n):
if sm[i-1]==sn[j-1]:
cost = 0
else:
cost = 1
matrix[i][j]=min(matrix[i-1][j]+1,matrix[i][j-1]+1,matrix[i-1][j-1]+cost)
for i in range(m):
print matrix[i] return matrix[m-1][n-1]
mindist=minEditDist("ivan1","ivan2")
print mindist
2)cos–相似度计算
input1.size() [batch_size, num_choices, hidden_size]
input2.size() [batch_size, hidden_size]
input2.repeat(1,num_chioces,1)
returned = torch.nn.CosineSimilarity(dim=2,eps=1e-6)->[batch_size, num_choices]
3)word break
CHID比赛:
1)
求blank state和choice_sentence余弦度,感觉过于简单,首先blank states应该进行更深的embedding, 其实cos太过简单(我只是想随便改改参数做个比赛,说实话我不是很认真,纯属是想碰运气外加了解了解)
一般阅读理解是给出,context,question,answer。而CHID是给出context和answer,有点像完形填空,但是完形填空是单个词,而我的是有解释的文本向量,
2)方法搜查:
想问题和sentence每个词做attn,之后问题与sentence匹配,
I. 略,依存语法:理解较复杂句子的结构和语义信息
II. bert阅读理解,是直接问题和context通过concat之后输入bert,之后预测答案(start,end),实际意义不大,
III. 语义匹配:
解决answer selction的一般思路是:首先用LSTM或者CNN的神经编码器学习问题和答案的表示,然后进行text matching,将任务转换为分类或者learning-to-rank问题。神经排序模型在QA中对候选答案进行排序以回答问题,核心是问答表示之间交互函数的设计。
https://zhuanlan.zhihu.com/p/39920446 主要是各种attention,
cloze传统方法:
- AoA Reader这个比较厉害,
预计使用atted-context,与blank state 进行concat,然后两个矩阵进行,运算太大,
textcnn: