有一个学校专业的字符串,怎样识别出哪部分是学校名称和专业名称( Java 实现)

2019-09-27 00:32:48 +08:00
 axwz88
比如一个字符串“北京大学软件工程”,“北京大学”和“软件工程”分别是学校名称和专业名称的变量,
假如有 2000 个学校和 1000 个专业,怎么识别出哪一部分是学校名称,哪一部分是专业名称呢?
用 2000 个学校去查询,再用 1000 个专业去查询,那查一次最多要查 3000 次,请问大家有没有好的解决方案。
3981 次点击
所在节点    程序员
28 条回复
muxixi
2019-09-27 11:35:49 +08:00
都是 学校+院系的组合

先排序 按前几个字符分组,然后随便算算相同的前缀,找出学校名,然后院系就出来了。
LudwigWS
2019-09-27 11:46:01 +08:00
V 站各路大神啊
MaiKuraki
2019-09-27 12:17:57 +08:00
正则表达式?
wysnylc
2019-09-27 12:21:49 +08:00
正则筛选+人工纠错
换什么方式都逃不掉人工纠错
yianing
2019-09-27 12:55:41 +08:00
想到了最长前缀匹配,计算机网络学了这个匹配路由的,可以用来匹配学校吧
axwz88
2019-09-27 13:03:43 +08:00
@aguesuka
@nevin47
@wmc
@no1xsyzy

感谢,用 ac 自动机可以高效实现,trie 树和 kmp 算法实现 ac 自动机,用 hashtable 对字符串碰撞也可以实现,受教了,没想到自己这么菜
axwz88
2019-09-27 13:06:38 +08:00
每条回复我都认真看了,的确解决问题的方式不止一种,综合大家的回复我考虑用 ac 自动机去实现
axwz88
2019-09-27 13:06:54 +08:00
感谢大家

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/604605

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX