使用机器学习完成文本

时间:2018-03-30 01:37:54

标签: python r machine-learning nlp n-gram

我有一份简短的文字清单。全部用英语。是否有可用于扩展这些缩写的机器学习算法?例如,如果简写是' 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)

它基本上以一个字母开头,然后删除,转置,替换和插入字母(使用字母表中的字母)。

如何将其扩展为两次以上的编辑?

1 个答案:

答案 0 :(得分:0)

第一部分与产生单词有关,第二部分与排序这些单词(并更新这些排名)有关。我将依次解决这两个部分并尝试指出任何机器学习,因为这是原始问题的一部分。

对于第一部分,我认为你不需要机器学习,并且不可否认地想到这一点,在这部分使用ML似乎是假的。我认为你可以用一个缩略语词典与同义词的使用相结合。

  1. 例如,首先在this列表中查找“txt”,列出“text”作为“txt”的扩展名。
  2. 选择“文字”并查找同义词。您可能希望将同义词限制为与原始首字母缩略词类似的那些,即包含一个子编辑距离为“txt”或包含首字母缩略词词典('text')的首字母缩写词。 请查看此post,了解如何使用NTLK查找Synsets。
  3. 这里的重要部分是涵盖您将遇到的所有首字母缩略词,因此您可能希望允许用户输入缺少的首字母缩写词和扩展词。

    对于第二部分,您可能需要结合两种评分算法,为每个单词指定一个分数,并按照分数对单词进行排名。

    第一个评分算法应该是没有任何用户数据的东西,所以最初你有一些半智能的单词排序。一个例子是根据单词对首字母缩略词的编辑次数对单词进行评分。所以“textual”的得分低于“text”的首字母缩略词“txt”,因为它需要更多的字母从“txt”转到“textual”。

    当您获得更多用户数据时,第二个评分算法将接管。您可以使用的一个例子是跟踪每个单词的流行程度(即选择它的次数)。请参阅Online machine learning

    通过学习线性函数将两个分数合并为最终分数(参见Linear Regression)。