gpt4 book ai didi

java - 从推文文本中提取主题标签、用户提及和 url 的快速方法?

转载 作者:搜寻专家 更新时间:2023-11-01 03:23:46 24 4
gpt4 key购买 nike

我正在尝试找到一种快速方法来获取为每个字符串创建的数组:1- 主题标签,2- 用户提及 3- 推文文本中的网址。我在 csv 文件中有推文文本。

我解决问题的方法处理时间太长,我想知道我是否可以稍微优化一下我的代码。我将针对每种匹配类型显示我的正则表达式规则,但只是为了不发布长代码,我将仅显示我如何匹配主题标签。同样的技术也适用于 url 和用户提及。

这里是:

public static String hashtagRegex = "^#\\w+|\\s#\\w+";
public static Pattern hashtagPattern = Pattern.compile(hashtagRegex);

public static String urlRegex = "http+://[\\S]+|https+://[\\S]+";
public static Pattern urlPattern = Pattern.compile(urlRegex);

public static String mentionRegex = "^@\\w+|\\s@\\w+";
public static Pattern mentionPattern = Pattern.compile(mentionRegex);

public static String[] getHashtag(String text) {
String hashtags[];
matcher = hashtagPattern.matcher(tweet.getText());

if ( matcher.find() ) {
hashtags = new String[matcher.groupCount()];
for ( int i = 0; matcher.find(); i++ ) {
//Also i'm getting an ArrayIndexOutOfBoundsException
hashtags[i] = matcher.group().replace(" ", "").replace("#", "");
}
}

return hashtags;

}

最佳答案

Matcher#groupCount 为您提供捕获组的数量,不是匹配的数量。这就是您得到 ArrayIndexOutOfBoundsException 的原因(在您的例子中,数组初始化为零)。您可能希望使用 List 来收集动态增长的匹配项,而不是数组。

一种(可能的)加速方法可能是对空格上的文本进行标记,然后只检查标记的开头是否有 http@#。这样,您就可以完全避免使用正则表达式。 (没有分析,所以我不能说出性能影响)。

关于java - 从推文文本中提取主题标签、用户提及和 url 的快速方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21203611/

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