文章
· 二月 28 阅读大约需 4 分钟

使用 SQL 文本搜索从非结构化数据中获取见解

什么是非结构化数据?
非结构化数据是指缺乏预定义数据模型或组织的信息。与数据库中具有清晰结构(例如表和字段)的结构化数据相比,非结构化数据缺乏固定的模式。此类数据包括文本、图像、视频、音频文件、社交媒体帖子、电子邮件等。

为什么来自非结构化数据的见解很重要?
根据 IDC(国际数据公司)的报告,预计到 2025 年,全球 80% 的数据将是非结构化的,这将成为 95% 企业的重大担忧。 福布斯文章

人工智能世界如何解决这个问题?
在人工智能领域,生成式人工智能在为非结构化数据提供解决方案方面发挥着至关重要的作用。它擅长从文本/图像/视频中提取有价值的信息、文本摘要和处理文档等任务。

Intersystems 非结构化数据解决方案
Intersystems IRIS 提供了一种称为“SQL 文本搜索”的特殊解决方案,用于搜索非结构化数据。此功能有助于对多种语言的非结构化文本数据进行语义上下文搜索。

使用 SQL 文本搜索有什么优点?

快速搜索: InterSystems IRIS SQL 搜索利用优化的索引生成快速导航大量数据,避免对数据本身进行顺序搜索。

单词感知搜索:与基本字符串搜索不同,SQL 搜索依赖于文本中的语义结构,以单词为基本单位。这种方法最大限度地减少了嵌入字符串或跨越两个单词的字符串引起的误报。

实体感知搜索: SQL 搜索考虑语义关系以将多个单词分组为实体。它可以搜索指定的单词序列、邻近的单词(无论顺序如何)以及实体开头或结尾的单词,从而实现精确的上下文搜索。

语言感知搜索:识别语义关系是特定于语言的,SQL 搜索合并了十种自然语言的语言模型。它还支持其他语言,无需创建词典或本体。

模式匹配: SQL 搜索为字符模式提供通配符和正则表达式 (RegEx) 匹配。

模糊匹配: SQL 搜索包括近似匹配的模糊搜索功能,考虑到搜索字符串的计算变异程度。即使出现拼写错误,这也有助于匹配。

派生匹配: SQL 搜索采用分解来匹配根词和组成词,并利用同义词表来匹配同义词和短语。

如何使用非结构化数据实现 SQL 文本搜索:MIND 的实际示例

为了演示 SQL 文本搜索对非结构化数据的实现,我们将使用 Microsoft 新闻数据集 (MIND) 作为示例,重点关注小型训练集。

注意:提供的示例使用 User 命名空间,但您可以将其替换为您选择的任何合适的命名空间,确保所有操作都发生在同一命名空间内。

第 1 步:下载并提取训练数据
从 MIND 下载 MIND 训练数据集MIND (msnews.github.io)并从存档中提取 news.tsv 文件。该文件以制表符分隔,我们将主要关注“类别”、“标题”和“描述”字段。

第 2 步:创建持久类
创建一个名为“Test.JSON”的持久类,其属性为“Title”(字符串)、“Category”(字符串)和“Description”(字符串)。专门为“Description”属性创建 %IFind.Basic 索引,以增强文本搜索性能。创建索引后,编译该类。

第 3 步:加载 MIND 数据集
将 MIND 数据集加载到新创建的类中。您可以使用类和对象方法或 SQL 来填充该表。以下代码演示了使用类和对象方法加载数据集。

第 4 步:验证数据集加载
加载数据集后,查询表以确保它准确包含预期的行。您可以使用终端中的 SQL 管理门户或 SQL Shell 进行此验证。

第 5 步:利用索引进行查询
现在,利用特定索引来设计查询并提取见解。例如,您可以使用以下查询:

检索微软公司新闻:

 SELECT %iFind.Highlight(Description, '"microsoft*"' ) FROM Test.JSON WHERE % ID %FIND search_index(DescriptionIdx, '"microsoft*"' , 0 , 'en' )


检索Google公司新闻:

 SELECT %iFind.Highlight(Description, '"google*"' ) FROM Test.JSON WHERE % ID %FIND search_index(DescriptionIdx, '"google*"' , 0 , 'en' )


检索 Google 和 Microsoft 的合并新闻:

 SELECT %iFind.Highlight(Description, '"microsoft*" "google*"' ) FROM Test.JSON WHERE % ID %FIND search_index(DescriptionIdx, '"microsoft*" "google*"' , 0 , 'en' )


免责声明:
请务必注意,语义和分析 SQL 搜索索引使用 InterSystems IRIS 自然语言处理 (NLP),而 InterSystems 已弃用该技术。截至最新社区版版本(2023.3.0),该功能仍然有效,但在未来版本中可能会被删除。使用 SQL 文本搜索的风险由您自行承担。

我将使用已弃用的 SQL 文本搜索的替代选项来撰写本文的续篇。如果您喜欢我的文章,请在下面投票并提出您的宝贵建议。谢谢你!

解说视频

讨论 (1)1
登录或注册以继续