我得到了一组字符串,其中包含如下串联的单词:
longstring (two English words)
googlecloud (a name and an English word)
当我在Google中输入这些术语时,它会识别出带有“did you mean?”(“长字符串”,“谷歌云”)。我需要在我的应用程序类似的功能。你知道吗
我研究了Python和ElasticSearch提供的选项。我发现的所有标记化示例都基于空格、大写、特殊字符等
如果字符串是英文的(但可能包含名称),我的选项是什么?它不一定是在特定的技术上。你知道吗
我能用googlebigquery完成这个吗?你知道吗
您是否也可以推出自己的实现?我在想这样一个算法:
如果字符串可以拆分,应该是可以的,但是如果它是乱七八糟的,会尝试所有的可能性。当然,这要看你的字典有多大。但这只是一个简单的想法,也许有帮助。你知道吗
如果选择使用BigQuery解决此问题,则以下是备选解决方案:
将所有可能的英语单词列表加载到名为
words
的表中。例如,https://github.com/dwyl/english-words有大约350000个单词的列表。互联网上也有其他免费的数据集(如WordNet)。使用标准SQL,对候选列表运行以下查询:
SELECT first, second FROM ( SELECT word AS first, SUBSTR(candidate, LENGTH(word) + 1) AS second FROM dataset.words CROSS JOIN ( SELECT candidate FROM UNNEST(["longstring", "googlecloud", "helloxiuhiewuh"]) candidate) WHERE STARTS_WITH(candidate, word)) WHERE second IN (SELECT word FROM dataset.words)
在本例中,它产生:
即使是非常大的英文单词列表也只有几MB,所以这个查询的成本是最小的。第一次1 TB扫描是免费的-这对于2 MB表上大约500000次扫描来说已经足够了。在那之后,每次额外的扫描是0.001美分。你知道吗
相关问题 更多 >
编程相关推荐