我有一份简短的文字清单。全部用英语。是否有可用于扩展这些缩写的机器学习算法?例如,如果简写是' txt',它可以建议“文本”,“上下文”,“文本”等等。惩罚值。
此外,当我在正确的单词上做出选择时,我希望它能够学习这一点,这样当我接下来输入相同的速记时,我的选择得到了很高的评价。
修改
具体来说,我尝试使用here描述的语言模型,但它仅适用于最多两个级别的编辑。 '编辑'功能如下:
def edits1(word):
"All edits that are one edit away from `word`."
letters = 'abcdefghijklmnopqrstuvwxyz'
splits = [(word[:i], word[i:]) for i in range(len(word) + 1)]
deletes = [L + R[1:] for L, R in splits if R]
transposes = [L + R[1] + R[0] + R[2:] for L, R in splits if len(R)>1]
replaces = [L + c + R[1:] for L, R in splits if R for c in letters]
inserts = [L + c + R for L, R in splits for c in letters]
return set(deletes + transposes + replaces + inserts)
它基本上以一个字母开头,然后删除,转置,替换和插入字母(使用字母表中的字母)。
如何将其扩展为两次以上的编辑?
答案 0 :(得分:0)
第一部分与产生单词有关,第二部分与排序这些单词(并更新这些排名)有关。我将依次解决这两个部分并尝试指出任何机器学习,因为这是原始问题的一部分。
对于第一部分,我认为你不需要机器学习,并且不可否认地想到这一点,在这部分使用ML似乎是假的。我认为你可以用一个缩略语词典与同义词的使用相结合。
这里的重要部分是涵盖您将遇到的所有首字母缩略词,因此您可能希望允许用户输入缺少的首字母缩写词和扩展词。
对于第二部分,您可能需要结合两种评分算法,为每个单词指定一个分数,并按照分数对单词进行排名。
第一个评分算法应该是没有任何用户数据的东西,所以最初你有一些半智能的单词排序。一个例子是根据单词对首字母缩略词的编辑次数对单词进行评分。所以“textual”的得分低于“text”的首字母缩略词“txt”,因为它需要更多的字母从“txt”转到“textual”。
当您获得更多用户数据时,第二个评分算法将接管。您可以使用的一个例子是跟踪每个单词的流行程度(即选择它的次数)。请参阅Online machine learning。
通过学习线性函数将两个分数合并为最终分数(参见Linear Regression)。