栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

NLP | 文本匹配算法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

NLP | 文本匹配算法

01 贪婪策略

今天我们调用python中的一个自然语言处理包nltk,来实现一个MaxMatch文本匹配算法。

什么是MaxMatch文本匹配算法呢?顾名思义,就是取最长的字符作为一个分词结果,比如说:“我爱中华人民共和国”这个句子,分词后,可以有很多结果,如,

  • {‘我’,‘爱’,‘中华’,‘人民’,‘共和国’}

  • {‘我’,‘爱’,‘中华人民共和国’}

MaxMatch文本匹配算法更倾向于后者的分词结果,因为‘中华人民共和国’显然是一个专有名词。

所以你看出来了,MaxMatch文本匹配算法其实是一种基于贪婪策略的算法。

下面我们演示针对英文的maxmatch算法(中文的逻辑相同,只是需要中文词库)

02 算法逻辑

根据前述MaxMatch算法的思想,我们可以设计出以下逻辑来实现此算法:

  • 输入:无空格、无其他符号的英文句子

  • 输出:用空格合理隔开的句子,使得句子有意义

  • 算法逻辑:从字符串右侧开始逐渐减少字符串长度(-1),每次都去检查当前字符串能否匹配对应词库的词

    • 若能匹配,则取出该段字符串,放入空字符串中,剩余字符串继续执行第一步操作

    • 若不匹配,则将字符串长度-1,再去检查是否匹配词库的词

03 算法实现

根据算法逻辑,我们利用python的nltk模块,实现MaxMatch算法。

"""
输入:无空格、无其他符号的英文句子(否则会死循环)
输出:用空格合理隔开的句子,使得句子有意义
"""def max_match(text):
    from nltk.stem import WordNetLemmatizer    from nltk.corpus import words    import time
    
    start_time=time.time()
    
    wordlist=set(words.words()) #利用词汇表语料库words建立单词列表
    lemmatizer=WordNetLemmatizer() #初始化词形还原函数
    
    position=len(text)
    result=""
    while len(text)>0:
        word=lemmatizer.lemmatize(text[:position]) #对输入的字符串进行词形还原,英文需要,中文不用
        if word in wordlist:
            result+=text[:position]+" "
            text=text[position:]
            position=len(text)        else:
            position-=1 #若不匹配,则将字符串长度-1,再去重复前述步骤
    print ("MaxMatch Algorithm Time Taken:{0}s".format(time.time()-start_time))    print ("MaxMatch result:",result)    return result

下面我们来测试一下这个算法

告诉我,你是不是看不懂下面这个text在说什么?别急,MaxMatch算法来拯救你~

text="Indiapolicementoldtoslimdownorlosejob"max_match(text)



输出

原来text说的是印度警察被要求减肥,否则就丢掉工作。

可以发现,算法处理后,有的词汇识别还是有些误差,比如or lose job 被判断为了orlo se job,原因很简单:nltk.corpus.words词库中包含大量词汇,orlo和or都在词库中,而我们的算法选择了更长的词(这也是算法核心),导致它最终分为了orlo而不是or

所以这也是最大匹配算法的一个缺点,它虽然保证了快速高效匹配文本,但准确率可能不够高。

04 总结

本文利用python的nltk模块实现了文本最大匹配算法,通过算法我们可以快速匹配句子中的文本,帮助我们快速理解语义,但最大匹配算法虽然保证了快速高效匹配文本,但准确率可能不够高。

希望对你有帮助~~



作者:邓莎
链接:https://www.jianshu.com/p/9766a1f09bbe


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/221331.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号