【发布时间】:2012-06-15 20:50:12
【问题描述】:
我需要有关如何编写算法以在字符串中找到关键字或关键短语的建议或指导。
字符串包含:
- 以英文 (GB) 编写的技术信息
- 单词大多用空格隔开
- 关键字不包含空格,但可以包含连字符、撇号、冒号等。
- 关键词可以包含空格、逗号或其他标点符号
- 如果两个或多个关键字同时出现,则很可能是关键字,例如“变频驱动”
- 文本还包含 HTML,但如有必要,可以事先将其删除
- 非关键字是“and”、“the”、“we”、“see”、“look”等词。
- 关键字不区分大小写,例如“逆变器”和“逆变器”是同一个关键词
算法有如下要求:
- 在批处理场景中操作,例如每天跑一到两次
- 处理长度从大约 200 到 7000 个字符不等的字符串
- 在 1 小时内处理 1000 个字符串
- 将在功率中等的服务器上执行
- 使用以下之一编写:C#、VB.NET 或 T-SQL 甚至可能是 F#、Python 或 Lua 等。
- 不依赖预定义的关键字或关键词列表
- 但可以依赖关键字排除列表,例如“and”、“the”、“go”等
- 理想情况下可转移到其他语言,例如不依赖于特定语言的功能,例如元编程
- 输出关键词列表(频率降序)后跟关键字列表(频率降序)
如果它可以在几秒钟内处理多达 8000 个字符,这样它就可以实时运行,那就太酷了,但我已经问够了!
只是寻求建议和方向:
- 这应该被视为两个独立的算法吗?
- 是否有任何我可以遵循的既定算法?
- 我的要求可行吗?
非常感谢。
附:字符串将从 SQL Server 2008 R2 数据库中检索,因此理想情况下该语言将支持此功能,如果不支持,则它必须能够读取/写入 STDOUT、管道、流或文件等。
【问题讨论】:
-
看到这个问题,只是有点不同,并且考虑到了 php。 stackoverflow.com/questions/10721836/keyword-analysis-in-php
-
您可能想研究 MSSQL 全文搜索? - blog.sqlauthority.com/2008/09/05/… - msdn.microsoft.com/en-us/library/ms142571.aspx - 它可能会也可能不会完全按照您的意愿行事,但我会花几个小时来看看
-
澄清一下,您列表中的第 8 点是在谈论口语还是编程语言?
-
感谢您指出歧义,我说的是编程语言。
-
@house9 我可以看到全文搜索可以让我识别关键字,但我看不出它如何让我对这些关键字进行加权。
标签: c# sql sql-server algorithm search