【问题标题】:Split string by word in Oracle looking for abbreviations in a lookup table在 Oracle 中逐字拆分字符串,在查找表中查找缩写
【发布时间】:2016-04-26 14:51:13
【问题描述】:

我有一个大约 100k 对文本字符串(句子)的列表,即使值不同,它们也可能意味着相同。很多问题仅仅是由于在其中的一半上使用了缩写和不同的标点符号:

Source 1                Source 2
TEMP.IND.               TEMPERATURE INDICATOR

我对如何解决这个问题的最初想法是按单词拆分字符串,然后在包含缩写词和类似于下面的全长单词的表中查找每个单词:

Abbreviation:          Meaning:
TEMP.                  TEMPERATURE
IND.                   INDICATOR

如果找到匹配项,我会使用新单词生成替换字符串,然后再将其与其他来源进行比较。如果它们不匹配,我对查找表中找到的每个缩写词重复该过程。

与例如相比,在 Oracle 中执行此操作会非常复杂吗? C#(我很流利)?最好将其保存在数据库中,但如果需要花费太多时间来实施,则不是。有没有更好的选择?另一种方法是手动检查所有内容。

抱歉,如果这是错误的网站。

【问题讨论】:

    标签: c# sql oracle


    【解决方案1】:

    在 DB (Oracle) 中操作应该和在 C# 中一样容易,而且可能要快得多。一旦创建了等价表(带有 Abbreviation 和 Meaning 列),编写代码就不是什么大问题了。

    难点在于规范。为什么要临时。 Ind. 是指“温度指示器”而不是“临时指数”或“印度寺庙”?仅当每个缩写对应于唯一含义时,这才有效(在 Oracle 或 C# 或其他无关的东西中)。

    祝你好运!

    【讨论】:

    • 我比较的文本来自一个非常具体的业务领域,所以不可能混淆。感谢您的回答!
    • 即便如此,在开始考虑代码之前,您仍需要一套强大的规则。例如,应该 Temp.扩展到温度和温度。温度(匹配情况)? Temp 时是否需要“感应”?是句子中的最后一个词,所以句号(句号,. 结束句子)不会被删除,留下没有句号的句子?你想要温度吗?和温度;都膨胀到温度; (后跟分号;)?在您已经开发代码之后出现这些可能会非常令人沮丧。
    猜你喜欢
    • 1970-01-01
    • 2015-10-28
    • 2023-04-09
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多