首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Scala -共生矩阵

Scala -共生矩阵
EN

Stack Overflow用户
提问于 2016-02-26 17:27:20
回答 2查看 144关注 0票数 0

我试图从一个txt文件中生成一个共现矩阵,它是一个对称矩阵。我完成了第一步,但现在我被困住了。

例如,如果我有“我正在堆叠溢出上发一篇文章并且我在这里”的文字,我就会:

代码语言:javascript
运行
复制
 List( (I,2), (am,2), (making,1), (a,1), (post,1), (on,1),(stackoverflow,1), (here,1) )

然后,为了建立我的矩阵,我需要像这样:

代码语言:javascript
运行
复制
first line : List( ((I,I),2 or 4 idk) ((I,am),4), ((I,making),3), ((I, a),2) ... )
Second line: List( ((am,I),4), ((am,am),2 or 4), ... )
etc.

我需要与值和的所有键组合,但我找不到合适的解决方案

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-26 17:52:44

假设像这样的事情应该能解决你的问题。

代码语言:javascript
运行
复制
  val ll = List(("I", 2), ("am", 2), ("making", 1), ("a", 1), ("post", 1), ("on", 1), ("stackoverflow", 1), ("here", 1))

  val r = ll.map { x =>
    ll.map { y =>
      ((x._1, y._1), x._2 + y._2)
    }
  }
  r.foreach(println)

结果:

代码语言:javascript
运行
复制
List(((I,I),4), ((I,am),4), ((I,making),3), ((I,a),3), ((I,post),3), ((I,on),3), ((I,stackoverflow),3), ((I,here),3))
List(((am,I),4), ((am,am),4), ((am,making),3), ((am,a),3), ((am,post),3), ((am,on),3), ((am,stackoverflow),3), ((am,here),3))
List(((making,I),3), ((making,am),3), ((making,making),2), ((making,a),2), ((making,post),2), ((making,on),2), ((making,stackoverflow),2), ((making,here),2))
List(((a,I),3), ((a,am),3), ((a,making),2), ((a,a),2), ((a,post),2), ((a,on),2), ((a,stackoverflow),2), ((a,here),2))
List(((post,I),3), ((post,am),3), ((post,making),2), ((post,a),2), ((post,post),2), ((post,on),2), ((post,stackoverflow),2), ((post,here),2))
List(((on,I),3), ((on,am),3), ((on,making),2), ((on,a),2), ((on,post),2), ((on,on),2), ((on,stackoverflow),2), ((on,here),2))
List(((stackoverflow,I),3), ((stackoverflow,am),3), ((stackoverflow,making),2), ((stackoverflow,a),2), ((stackoverflow,post),2), ((stackoverflow,on),2), ((stackoverflow,stackoverflow),2), ((stackoverflow,here),2))
List(((here,I),3), ((here,am),3), ((here,making),2), ((here,a),2), ((here,post),2), ((here,on),2), ((here,stackoverflow),2), ((here,here),2))
票数 0
EN

Stack Overflow用户

发布于 2016-02-26 18:14:38

希望我能正确理解这个问题。将Wordsn调用为您的第一个n个单词数组及其相关计数,那么m-第一个单词将是字-1,0和它的计数字sum 1,1。然后我们定义另一个数组WordCouplesn,包含每一对可能的单词和它们各自计数的总和。WordCouples有n个平方条目,每个条目包含3个值: WordCouplesi,0包含第一个单词,WordCouplesi,1包含第一个组合的第二个单词,WordCouples i,2包含两个单词的计数之和。

然后,您可以从单词中填写WordCouples,如下所示:

代码语言:javascript
运行
复制
for (int i; i<n; i++) {
    for (int j; j<n; j++) {
        WordCouples[n*i+j,0]=Word[i,0];
        WordCouples[n*i+j,1]=Word[j,0];
        WordCouples[n*i+j,2]=Word[i,1]+Word[j,1];
    }

请注意,上面提到的只是作为您的解决方案的一个建议的逻辑方法。很可能需要从上面数组的"int“元素中拆分"String”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35658043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档