中文分词模拟器

news/2024/11/14 16:05:02/

题目描述
给定一个连续不包含空格的字符串,该字符串仅包含英文小写字母及英文标点符号(逗号、分号、句号),同时给定词库,对该字符串进行精确分词。

说明:

精确分词:字符串分词后,不会出现重叠。即"ilovechina",不同词库可分割为"i,love,china",“ilove,china”,不能分割出现重叠的"i,ilove,china",i 出现重叠

标点符号不成词,仅用于断句

词库:根据外部知识库统计出来的常用词汇例:dictionary = [“i”, “love”, “china”, “lovechina”, “ilove”]

分词原则:采用分词顺序优先且最长匹配原则

“ilovechina”,假设分词结果 [i,ilove,lo,love,ch,china,lovechina],则输出 [ilove,china]

错误输出:[i,lovechina],原因:“ilove” > 优先于 “lovechina” 成词

错误输出:[i,love,china],原因:“ilove” > "i"遵循最长匹配原则

输入描述
第一行输入待分词语句 “ilovechina”

字符串长度限制:0 < length < 256
第二行输入中文词库 “i,love,china,ch,na,ve,lo,this,is,this,word”

词库长度限制:1 < length < 100000
输出描述
按顺序输出分词结果 “i,love,china”

用例1
输入
ilovechina
i,love,china,ch,na,ve,lo,this,is,the,word
输出
i,love,china
用例2
输入
iat
i,love,china,ch,na,ve,lo,this,is,the,word,beauti,tiful,ful
输出
i,a,t
说明
单个字母,

不在词库中且不成词则输出单个字母

用例3
输入
ilovechina,thewordisbeautiful
i,love,china,ch,na,ve,lo,this,is,the,word,beauti,tiful,ful
输出
i,love,china,the,word,is,beauti,ful
说明
标点符号为英文标点符号

python">import re
old_sentences =list(re.split(r'[,.;]',input()))
words = list(re.split(r'[,.;]',input()))
#后续测试发现sentences中可能因为再末尾存在(逗号,分号,句号)导致有空字符串
sentences = [sentence for sentence in old_sentences if sentence!='']
words = set(words)
def match():results=[]while len(sentences)>0:sentence = sentences.pop(0)l = len(sentence) #while l>0:temp = sentence[:l]#因为要优先匹配长的if temp in words:#是否存在该单词results.append(temp)words.remove(temp) #如果每个单词只能用一次的话就得移除,经过测试发现必须去除#如果字串词汇只是句子的部分,则剩余部分还要继续if l<len(sentence):sentences.insert(0,sentence[l:])breakl-=1if l==0:#没找到就输出单个字母results.append(sentence[0])if len(sentence)>1:sentences.insert(0,sentence[1:])return  ','.join(results)
print(match())

http://www.ppmy.cn/news/1546965.html

相关文章

AndroidStudio-文本显示

一、设置文本的内容 1.方式&#xff1a; &#xff08;1&#xff09;在XML文件中通过属性&#xff1a;android:text设置文本 例如&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.andr…

共筑开源技术新篇章 | 2024 CCF中国开源大会盛大开幕

在这个技术革新日新月异的时代&#xff0c;开源精神如同点燃创新火焰的火种&#xff0c;照亮了无数技术探索者的征途。2024年11月9日&#xff0c;备受瞩目的2024 CCF中国开源大会在深圳这座充满活力的创新之城盛大开幕。这场开源领域的顶级盛事&#xff0c;以“湾区聚力 开源启…

结构体是否包含特定类型的成员变量

结构体是否包含特定类型的成员变量 在C中&#xff0c;可以使用模板元编程和类型特性&#xff08;type traits&#xff09;来判断一个结构体是否包含特定类型的成员变量。这通常通过std::is_member_object_pointer类型特性来实现&#xff0c;它可以用来检查给定的成员指针是否指…

PHP开发示例-vin码识别接口-引领汽车行业数字化新风向

在当今社会&#xff0c;随着互联网技术的飞速发展&#xff0c;各行各业都在经历着深刻的变革&#xff0c;汽车行业也不例外。从智能驾驶到车联网&#xff0c;技术创新不断推动着汽车行业的进步。在这一背景下&#xff0c;VIN码识别技术作为连接线上与线下、传统与现代的桥梁&am…

Android 开启流量节省状态会使热点与网络共享无法打开

流量节省&#xff08;Data saver&#xff09;默认状态&#xff1a; vendor/mediatek/proprietary/packages/apps/SettingsProvider/res/values/defaults.xml <bool name"def_restrict_background_data">true</bool> 如果为true&#xff0c;WLAN热点无…

数据库SQLite的使用

SQLite是一个C语言库&#xff0c;实现了一个小型、快速、独立、高可靠性、功能齐全的SQL数据库引擎。SQLite文件格式稳定、跨平台且向后兼容。SQLite源代码属于公共领域(public-domain)&#xff0c;任何人都可以免费将其用于任何目的。源码地址&#xff1a;https://github.com/…

WPF+MVVM案例实战与特效(二十八)- 自定义WPF ComboBox样式:打造个性化下拉菜单

文章目录 1. 引言案例效果3. ComboBox 基础4. 自定义 ComboBox 样式4.1 定义 ComboBox 样式4.2 定义 ComboBoxItem 样式4.3 定义 ToggleButton 样式4.4 定义 Popup 样式5. 示例代码6. 结论1. 引言 在WPF应用程序中,ComboBox控件是一个常用的输入控件,用于从多个选项中选择一…

新的服务器Centos7.6 安装基础的环境配置(新服务器可直接粘贴使用配置)

常见的基础服务器配置之Centos命令 正常来说都是安装一个docker基本上很多问题都可以解决了&#xff0c;我基本上都是通过docker去管理一些容器如&#xff1a;mysql、redis、mongoDB等之类的镜像&#xff0c;还有一些中间件如kafka。下面就安装一个 docker 和 nginx 的相关配置…