java - 如果我们在句子中使用带有位置编号的单词,如何定义可能的组合

标签 java math nlp combinations factorial

在 NLP 上下文中,我正在研究一种有效的方法来定义单个和组合列表作为字符串输入的点分隔表示,例如:1 2 3 4 5 6 7 8 9。其中每个位置编号实际上是一个单词。

想象一个有 2 个单词的句子:

I want.

将此句子拆分为 2 个单词,其中位置为 I=1,want=2。 那么可能的单打和组合的位置是:

1、2、1.2、2.1、= 4 个结果

如果输入是3,那么我得到: 1, 2,3,1.2,1.3, 2.1, 2.3, 3.1, 3.2, 1.2.3, 1.3.2, 2.1.3, 2.3.1, 3.2.1, 3.1.2.= 15 个结果

我想定义一个 Java 操作,它给出字符串输入的单个/组合列表,例如:1 2 3 4 5 6 7 8 9。这应该类似于字符串列表,例如:

1,2,...., 9.8.7.6.5.4.3.2.1

N 个结果

看到一些结果与建议的阶乘 (3*2*1!=15) 不同,我认为这是另一个公式。

最佳答案

你想要permutations without replacement :

排列数 = n!/(n-r)!

如果句子中有 n 个单词,并且您想查看 r 个单词的句子中有多少种没有替换的排列,那么这个公式就是您的答案。

如果 n = r,则排列数 = n!,因为 0! = 1。

更新:

如果允许 r = 1, 2, 3...n 的排列,那么您必须对 r 求和。公式仍然是正确的。

关于java - 如果我们在句子中使用带有位置编号的单词,如何定义可能的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51921195/

相关文章:

python - 有没有基于perl或者python的开源工具生成文档的思维导图摘要

android - 线程中的数学函数返回错误值,使用 android ndk

python - python中的谐波级数

查找句子边界的 Java 库

java - java中的资源包类在读取属性文件时抛出异常

math - 方程显示问题 - Mathjax/Latex

machine-learning - BERT 中的 token 嵌入是如何创建的?

java - 如何在android中使用opengl es绘制3d对象,以org.opencv.android.javacameraview作为背景

java - Guice 如何将依赖项注入(inject)从动态加载的类实例化的对象

java - 如何使用 Maven 将 Implementation-Version 值添加到 jar list ?