gpt4 book ai didi

scala - 我可以编写一个返回 n 元组的 Scala 函数,其中 n 由参数定义吗?

转载 作者:行者123 更新时间:2023-12-04 17:55:15 28 4
gpt4 key购买 nike

我正在尝试编写一个从推文生成 n-gram 的 Scala 函数。

该函数将接受两个参数,首先是一个字符串列表(我们要检查的推文)和一个整数 n。如果我们将 n 设置为 2(默认值),那么该函数的结果将是一个 2 元组的 HashMultiset,同样如果我们将其设置为 3,那么结果将是一个 3 元组的 HashMultiset。

有没有办法定义这样的函数?我想明确我的打字,所以我不想只是将函数定义为返回一个 MultiSet of Any。

这是我到目前为止的 stub 函数,它仅适用于 n==2:

def extract_ngrams(tweets:List[String], n:Int=2):HashMultiset[(String,String)] = {
val result = HashMultiset.create[(String,String)]()
result.add(("a", "a"))
result
}

最佳答案

Scala 中的元组最多只能有 22 个。所以即使有可能它也只允许 2..22 的 n 个值。

相反,我会简单地返回 HashMultiset[Array[String]]并且您可以使用 n 来定义结果数量:val result = HashMultiset[Array[String]].create()
然后你可以 map it to tuples需要时取决于用例。

更新

如果我明白你需要什么,我会做类似的事情

def extract_ngrams(tweets:List[String], n:Int=2):Map[List[String],Int] = {
tweets.sliding(n).toList.groupBy(_.toList).mapValues(_.length)
}

关于scala - 我可以编写一个返回 n 元组的 Scala 函数,其中 n 由参数定义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28286052/

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