python 单词拆分_python - 如何拆分没有空格的文本为单词列表?将组合单词拆分开...

python - 如何拆分没有空格的文本为单词列表?将组合单词拆分开

很多时候,我们需要把一长串单词字符拆分开来,比如:

输入:“tableapplechairtablecupboard …”很多字。我们希望有一个有效的算法来分割这样的文本到单词列表,并得到:

输出:[“table”,“apple”,“chair”,“table”,“cup”,“board”]

或者将一个很长的函数名拆分成小单词: WbxNewBrowserInstance 变为 [ wbx new browser instance ]

1算法的思想

算法的思想是:通过所有可能的单词(从第一个字母开始),并找到最长的单词可能 ,插入空格。

所以我们需要一个 “常用单词列表”。

后面的方法是对输出的分布进行建模。良好的第一近似是假设所有单词是独立分布的。然后你只需要知道所有单词的相对频率。可以合理地假定它们遵循Zipf定律,即在单词列表中具有秩n的单词具有大约1 /(n log N)的概率,其中N是字典中的单词数。

一旦你修正了模型,你可以使用动态规划来推断空格的位置。最可能的句子是最大化每个单词的概率的乘积,并且很容易用动态规划来计算它。不是直接使用概率,而是使用定义为概率的倒数的对数的成本来避免溢出。

2代码

def cutLongNameFun(self,s):

''' longWords变为 long word:log里面有很多长函数名,比如WbxMeeting_VerifyMeetingIsExist。 将其拆成小单词wbx meeting verify m

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值