java - 如何将字符串拆分为所有可能的 n 元语法/所有可能的 6 元语法

标签 java string substring talend n-gram

好的,这是我的输入

产品名称

机械

大型机械

农业机械

苹果汁

果汁机

软件开发

业务发展

软件许可

鸡蛋

...

Productname 可以是任何长度不同的字符串 - Min(Length()) 实际上是 3,但假设 Max(Length()) 可以是从 15 到 50(?) 的任何值。

我需要的是

a) 从上面的源列表中提取所有可能的 6-gram(将其保存在某个地方?) b) 查看这些 6-gram 中的每一个在源列表中出现的频率

一) “机械” “机器” “奇纳” “希内里” “内里”, “纳里” “埃里,B” “里,比” ... “艾森西” “普查辛” “感” “鸡蛋”

b) 基本上,SELECT <6-gram> AS gram, COUNT(*) FROM products WHERE Productname like '%<6-gram>%' (或者也许使用 JOIN,如果克存储在不同的表中)

我可以使用 TJava 组件和 GlobalVar Set 对象(有点像这里看到的: http://bekwam.blogspot.de/2012/08/iterating-over-java-collection-with.html )来做到这一点,一次将一个字符串放入 TJava 组件中并制作一组所有可能的 6-grams,然后可以对其进行处理。 (设置,因为我不需要重复项)

有没有更简单、更好的方法来做到这一点?最好没有 TJava 组件?我 99% 的时间都使用 Talend Open Studio 进行数据集成,也许其他组件可以做到这一点? 如果没有更好的方法来做到这一点,我如何在其他作业和项目中重用代码/通过允许选择 4-gram、5-gram、n-gram 使其更加动态。

这里提出了第一个问题,如果不够具体/英语不好/不够精确,请原谅我。欢迎批评

精选来自德国的问候 斯特凡

最佳答案

没有任何组件可以做到这一点,为了使您的代码可重用,只需使用 user routine ,它在项目中的任何作业中都是可见的。另一种方法是将其打包在 jar 文件中,并在需要时加载它 tLibraryLoad 。 要使代码动态化,您可以使用 context variables并将其传递给您的方法,如下所示:MyStaticRoutine.getNgrams(input,n);

关于java - 如何将字符串拆分为所有可能的 n 元语法/所有可能的 6 元语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33903367/

相关文章:

java - 在进行 twilio 电话 session 时收集用户的输入

Java Jpeg 解码器

java - 这可能吗? : HashMap<String, 字符>

javascript - 子字符串不适用于 jquery .text()

sql - postgresql:不允许负子字符串长度,但数据中没有明显的违规

java - 在 Java 中声明限定符的正确方法是什么

java - 字符串 s=新字符串 ("Rohit");该语句是仅在堆中创建一个对象还是也在字符串池中创建一个条目?

ruby - 如何在ruby中给定的两个字符串之间打印字符串?

string - 在XPATH中获取属性的子字符串

java - 抽象类中的公共(public)字段?