gpt4 book ai didi

c# - 在 C# 中安全/惯用地提取子数组

转载 作者:太空宇宙 更新时间:2023-11-03 22:09:46 24 4
gpt4 key购买 nike

我正在用 C# 构建一个自然语言处理器,我们数据库中的许多“词”实际上是指代一个名词或 Action 的多词短语。拜托,不要讨论这个设计电话,只要说它现在是不可改变的就够了。我有句子的相关词( block )的字符串数组,我需要测试这些短语和词。 处理子数组提取的适当惯用方法是什么,这样我就可以将出现溢出错误等的风险降到最低?

为了给出所需逻辑的示例,让我逐步运行一个样本 block 。出于我们的目的,假设数据库中唯一的多词短语是“quick brown”。

Full phrase: The quick brown fox -> encoded as {"The", "quick", "brown", "fox"}
First iteration: Test "The quick brown fox" -> returns nothing
Second iteration: Test "The quick brown" -> returns nothing
Third iteration: Test "The quick" -> returns nothing
Fourth iteration: Test "The" -> returns value
Fifth iteration: Test "quick brown fox" -> returns nothing
Sixth iteration: Test "quick brown" -> returns value
Seventh iteration: Test "fox" -> returns value

Sum all returned values and return.

我对如何解决这个问题有一些想法,但我看得越多,我就越担心数组寻址错误和其他类似的问题困扰着我的代码。该短语以字符串数组的形式出现,但我可以将其放入 IEnumerable。我唯一担心的是 Enumerable 缺少索引。

最佳答案

这听起来像是 Aho-Corasick 字符串匹配算法的完美应用。我有一本包含大约 1000 万个短语的字典,我在其中运行短字符串。它的速度快得令人难以置信。只需一次,它就会告诉您所有匹配的短语。因此,如果“the”、“fox”和“quick brown”都在字典中,则一次传递将返回所有三个索引。

这很容易实现。网上找原论文,一个下午就可以搭建起来。

Efficient String Matching: An Aid to Bibliographic Search

关于c# - 在 C# 中安全/惯用地提取子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7070540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com