Scala初学者在这里,我试图找到所有推文文本,其中包含至少一个关键字中的关键字。
推文:
case class Tweet(user: String, text: String, retweets: Int)
使用示例Tweet("user1", "apple apple", 3)
如果在推文的文本中找到列表关键字中的至少一个关键字,那么 wordInTweet 应该返回true。
我尝试像下面那样实现它:
def wordInTweet(tweet: Tweet, keywords: List[String]): Boolean = {
keywords.exists(tweet.text.equals(_))
}
但是,如果推文的文字是音乐,并且给定关键字的文字音乐,它也会返回 true >
我正努力寻找一种方法,只有在推文时才能返回真实情况 包含完全相同的关键字文字。
我如何实现这一目标?
提前致谢。
答案 0 :(得分:4)
首先,如果您将keywords
视为一个集合会有所帮助,因为集合具有非常高效的belongs
函数。
keywords: Set[String]
然后我们需要测试推文中的每个单词,而不是完整的文本。这意味着我们需要将文本拆分为单词。我们在无处不在的" wordCount"中找到了一个无处不在的例子。示例
val wordsInTweet = tweet.text.split("\\W")
接下来,我们把事情放在一起:
def wordInTweet(tweet: Tweet, keywords: Set[String]): Boolean = {
val wordsInTweet = tweet.text.split("\\W")
wordsInTweet.exists(word => keywords.contains(word))
}