java - 跳过 Java 字符串中的二元语法(比较两个句子)

标签 java string compare string-comparison sentence

我需要帮助来使用 Java 中的字符串来完成这件事。 对我来说解释的最好方法是使用示例。

因此,我想从两个句子(用户输入)中提取跳过二元语法,然后能够比较彼此的相似性。

句子#1:“我喜欢青苹果。” 句子#2:“我喜欢红苹果。”

此外,还有一个名为“distance”的变量,用于获取单词之间的距离。 (目前还不是很重要)

结果

使用距离3句子#1中提取的跳过二元语法将是:

{我爱},{我绿色},{我苹果},{爱绿色},{爱苹果},{青苹果}

(总共 6 个二元组)

使用距离3句子#2中提取的跳过二元语法将是:

{我爱}、{我红}、{我苹果}、{爱红}、{爱苹果}、{红苹果}

(总共 6 个二元组)

<小时/>

到目前为止我想过使用String[]来放置分割字符串句子。

所以我的问题是,从句子中提取这些二元语法的代码可能是什么?

提前致谢!

最佳答案

基本上,您希望从单词句子中找到所有唯一的两个单词组合。

这是一种涉及 ArrayList 的解决方案:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Test {
    public static String[][] skipBigrams(String input) {
        String[] tokens = input.replaceAll("[^a-zA-Z ]", "").split("\\s+");
        return skipBigrams(tokens);
    }

    private static String[][] skipBigrams(String[] tokens) {
        List<String[]> bigrams = new ArrayList<>();
        for (int i = 0; i < tokens.length; i++) {
            for (int j = i + 1; j < tokens.length; j++) {
                bigrams.add(new String[]{tokens[i], tokens[j]});
            }
        }
        String[][] result = new String[bigrams.size()][2];
        result = bigrams.toArray(result);
        return result;
    }

    public static void main(String[] args) {
        String s1 = "I love green apples.";
        System.out.println(Arrays.deepToString(skipBigrams(s1)));
    }
}

关于java - 跳过 Java 字符串中的二元语法(比较两个句子),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40777425/

相关文章:

java - 如何从 Firebase 数据库检索图像并将其显示在 RecyclerView 中?

java - 将组件添加到两个不同的 JTabbedPanes

java - FilterChainProxy 不会 Autowiring

android - 比较 R.id 和 int

汇编语言: printing lowercase to uppercase

java - getView() 方法在带有 gridview 的自定义适配器中未调用

android - android中textview的一部分可以点击

java - 使用 Scanner 时字符串比较失败

javascript - 如何将数字按原样转换为字符串

php - 比较嵌套数组