T-SQL 判断字符串文本中的名词和动词

T-SQL Determining Nouns and Verbs in String Text

将应用程序从一个开发平台转换为 VB.NET / SQL 服务器。

用户有一些功能,他们可以输入一个短语,然后对文本进行数据库搜索。

原始代码的维护者不能(或不愿意)给我任何当前使用的逻辑或代码。

我的一位用户联系人告诉我,"search mechanism" 确定短语中的动词并从那里开始工作。

我们正在使用 SQL Server 2008 R2。我们不允许使用 CLR 代码。 有谁知道使用 T-SQL?

确定词性的任何方法

如果我有 SQL Server 2012,我会使用模糊搜索来完成这项工作,但我们没有。

==========

更新: 虽然我不进行 noun/verb/parts 语音查找,但我目前的 Dictionary/Phrase 查找方法是基于关键字并执行以下操作...

我将要搜索的词组拆分为关键字。

我使用“赞”搜索我的词典(术语和示例)或搜索词列表中的任何词。

对于那些候选人,我做了一组计数。我计算了与我的原始短语完全匹配的数量,然后计算了匹配关键字的数量。

最后我用T-SQL Levenshtein算法计算"difference distance".

然后我 return 按总匹配数/Levenshtein 值排序的匹配项。

这是我能做到的"best"...

你或许可以使用布隆过滤器来做到这一点...

https://en.wikipedia.org/wiki/Bloom_filter

布隆过滤器可用作拼写检查和更正机制。它通过识别字典中的单词(在你的字符串中)来工作......例如,你的字典将包含动词

这是您要存储在 [Bloom Filter] 词典中的所有动词示例的列表

http://www.worldclasslearning.com/english/five-verb-forms.html

然后它们将与您的字符串中的单词匹配......

我的网站上有一个示例,但是当我今天最后一次查看该网站时,服务器已关闭。一旦它再次可用,我将 post 一个 link 示例和演示...

同时,这里有一个例子,虽然它是用 C# 编写的.....

https://gist.github.com/richardkundl/8300092

好的,我的网站又恢复正常了...这里是布隆过滤器的 link 到 VB 示例。它是一个控制台演示,用于说明布隆过滤器的工作原理...

http://gsidev.somee.com/#3&84335AB075764976B53A90E9B1522000&vb

这是一个 link 的小型 VB.net 和 C# 演示应用程序,使用我创建的 winform 控件....也有一个演示视频....

http://gsidev.somee.com/#4&F69A67EE2E44492EA53A9537FD94F3FD&info

您基本上可以颠倒识别 'correctly' 拼写单词的逻辑,改为识别动词或名词....然后,而不是拥有每个单词的字典(就像您使用拼写检查器那样)你只需要一本动词或名词字典...

就速度而言,如果调整得当,Bloom Filter 会非常高效,即使有 10000 个单词的字典,它也不会简单地将给定字符串与字符串列表进行比较(这将永远花费)...比那更复杂....理论是给定的单词是 "possibly in set" 或 "definitely not in set" 即 '它可能拼写正确或者它肯定没有拼写正确' 听起来有点空泛,但实际上在大约 97% - 98% 的时间里是非常准确的......