Skip to content

Instantly share code, notes, and snippets.

@udion
Last active September 21, 2017 17:19
Show Gist options
  • Save udion/6cbbc1110ddfb53b96bf3c4cca57a658 to your computer and use it in GitHub Desktop.
Save udion/6cbbc1110ddfb53b96bf3c4cca57a658 to your computer and use it in GitHub Desktop.
playing with spark
Bend your chest open so I can reach your heart.
I need to get inside, or I'll start a war.
Wanna look at the pieces that make you who you are.
I wanna build you up and pick you apart.
Let me see the dark sides as well as the bright.
I'm gonna love you inside out.
I'm gonna love you inside out.
Let me see the dark sides as well as the bright.
I'm gonna love you inside out.
I'm gonna love you inside out.
I'm gonna love you in.
I'm gonna love you.
I'm gonna love you.
I'm gonna pick your brain and get to know your thoughts.
So I can read your mind when you don't wanna talk.
And can I touch your face before you go.
I collect your scales but you don't have to know.
Let me see the dark sides as well as the bright.
I'm gonna love you inside out.
I'm gonna love you inside out.
Let me see the dark sides as well as the bright.
I'm gonna love you inside out.
I'm gonna love you inside out.
I'm gonna love you in.
I'm gonna love you.
I'm gonna love you.
I'm gonna love you inside out.
Your love, inside out.
I'm gonna love you inside out.
I'm gonna love you inside out.
Inside out.
Your love, inside out.
I'm gonna love, I'm gonna love you inside out.
Ou-ou-ou-out, ou-ou-ou-out.
I'm gonna love you.
Ou-ou-ou-out, ou-ou-ou-out.
I'm gonna love you.
Ou-ou-ou-out, ou-ou-ou-out.
I'm gonna love you .
import scala.Tuple2;
import scala.Tuple3;
import org.apache.spark.SparkContext;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.*;
import org.apache.spark.util.LongAccumulator;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;
public final class wordCount {
private static final Pattern SPACE = Pattern.compile(" ");
public static List<String> getWords(String s) {
String[] words = s.split(" ");
return Arrays.asList(words);
}
public static List<Tuple2<String, String>> getWordsPair(String s) {
String[] words = s.split(" ");
List<Tuple2<String, String>> wordsPair = new ArrayList<Tuple2<String, String>>();
for(int i=0; i<words.length - 1; i++) {
wordsPair.add(new Tuple2<String, String>(words[i], words[i+1]));
}
return wordsPair;
}
public static Tuple2<Tuple2<String,String>, Tuple2<Float, Float>> restructure3_4(Tuple2<String, Tuple2<Tuple2<String, Float>, Float>> t){
String w2 = t._1();
String w1 = t._2()._1()._1();
float cnt1 = t._2()._1()._2();
float cnt2 = t._2()._2();
Tuple2<String, String>x1 = new Tuple2<String, String>(w1,w2);
Tuple2<Float, Float>x2 = new Tuple2<Float, Float>(cnt1, cnt2);
Tuple2<Tuple2<String, String>, Tuple2<Float, Float>> x = new Tuple2<Tuple2<String,String>, Tuple2<Float, Float> >(x1, x2);
return x;
}
public static Tuple2<Tuple2<String, String>, Tuple3<Float, Float, Float> >restructure4_5(Tuple2<Tuple2<String, String>, Tuple2<Tuple2<Float, Float>, Float>> s){
Tuple2<String, String> wp = s._1();
float cnt1 = s._2()._1()._1();
float cnt2 = s._2()._1()._2();
float cntpair = s._2()._2();
Tuple3<Float, Float, Float> x = new Tuple3<Float, Float, Float>(cntpair, cnt1, cnt2);
Tuple2<Tuple2<String, String>, Tuple3<Float, Float, Float>> f = new Tuple2<Tuple2<String,String>, Tuple3<Float, Float, Float>>(wp,x);
return f;
}
public static void main(String[] args){
if (args.length < 1) {
System.err.println("Usage: JavaWordCount <file>");
System.exit(1);
}
SparkSession spark = SparkSession
.builder()
.appName("JavaWordCount")
.getOrCreate();
//to get the spark context
JavaSparkContext sc = new JavaSparkContext(spark.sparkContext());
//Code to split a file into sentences:
sc.hadoopConfiguration().set("textinputformat.record.delimiter",".");
String path = args[0];
JavaRDD<String> lines = sc.textFile("file:///"+path).cache();
lines = lines.map(s -> s.toLowerCase().replaceAll("[^A-za-z]", " ").replaceAll("( )+", " ").trim());
//RDD's for the words and the pairwords of each of the sentences
//that can be created by using the RDD's of lines
//using flatmap and the functions which can return me the splits
JavaRDD<String> words = lines.flatMap(s -> getWords(s).iterator());
JavaRDD<Tuple2<String, String>> wordsPair = lines.flatMap(s -> getWordsPair(s).iterator());
//to get the counts of the #words and #number of words
JavaPairRDD<String, Integer> wordOnes = words.mapToPair(s -> new Tuple2<>(s,1));
JavaPairRDD< Tuple2<String, String>, Integer> pairOnes = wordsPair.mapToPair(s -> new Tuple2<>(s,1));
JavaPairRDD<String, Integer> wordCount = wordOnes.reduceByKey((i1, i2) -> i1+i2);
JavaPairRDD< Tuple2<String, String>, Integer> pairCount = pairOnes.reduceByKey((i1, i2) -> i1+i2);
//to get the total count all together of the documents given
SparkContext ssc = sc.sc();
LongAccumulator wcval = ssc.longAccumulator();
LongAccumulator wpcval = ssc.longAccumulator();
wordCount.foreach(t -> wcval.add(t._2()));
pairCount.foreach(t -> wpcval.add(t._2()));
float wc = wcval.value();
float wpc = wpcval.value();
//to get the probability of each of the words and pairs
JavaPairRDD<String, Float> wordProb = wordCount.mapToPair(s -> new Tuple2<String, Float>(s._1(), s._2()/wc));
JavaPairRDD<Tuple2<String, String>, Float> pairProb = pairCount.mapToPair(s -> new Tuple2<Tuple2<String, String>, Float>(s._1(), s._2()/wpc));
//To get the joins of various RDDs
JavaPairRDD<String, String> wP = wordsPair.mapToPair(s -> s);
JavaPairRDD<String ,Tuple2<String, Float>> wP1 = wP.join(wordProb); //this gives me (w1, (w2, cnt1))
JavaPairRDD<String, Tuple2<String, Float>> wP2 = wP1.mapToPair(s -> new Tuple2<>(s._2()._1(), new Tuple2<>(s._1(), s._2()._2())));
//wp2 has (w2, (w1,cnt1))
JavaPairRDD<String, Tuple2<Tuple2<String, Float>, Float>> wP3 = wP2.join(wordProb);
//wp3 has (w2, ((w1,cnt1), cnt2)), restructuring
JavaPairRDD<Tuple2<String,String>, Tuple2<Float, Float>> wP4 = wP3.mapToPair(s -> restructure3_4(s));
//wP4 has ((w1, w2), (cnt1, cnt2))
JavaPairRDD<Tuple2<String, String>, Tuple2<Tuple2<Float, Float>, Float>> wP5 = wP4.join(pairProb);
JavaPairRDD<Tuple2<String, String>, Tuple3<Float, Float, Float>> wP6 = wP5.mapToPair(s -> restructure4_5(s));
//to avoid redundancy in the final RDD
JavaPairRDD<Tuple2<String, String>, Tuple3<Float, Float, Float>> wP7 = wP6.reduceByKey((i1, i2)->i1);
//to apply the filter selecting only those pair which occured more than
//10 times as we would have expected a random word pair to be
JavaPairRDD<Tuple2<String, String>, Tuple3<Float, Float, Float>> wP8 = wP7.filter(s -> s._2()._1() > 10*s._2()._2()*s._2()._3());
//priniting the total count
List<Tuple2<String, Integer>> wordCnt = wordCount.reduceByKey((i1, i2)->i1).collect();
List< Tuple2<String, Tuple2<String, Float>> >temp = wP2.reduceByKey((i1, i2)->i1).collect();
List<Tuple2< Tuple2<String, String>, Integer>> pairwordCnt = pairCount.reduceByKey((i1, i2)->i1).collect();
List< Tuple2<Tuple2<String, String>, Tuple3<Float, Float, Float>> > wpf = wP7.collect();
List< Tuple2<String, Float> >temp1 = wordProb.reduceByKey((i1, i2)->i1).collect();
List< Tuple2<Tuple2<String, String>, Tuple3<Float, Float, Float>> >wpFilter = wP8.collect();
// for(Tuple2<?,?> tuple: wordCnt) {
// System.out.println("word count for "+tuple._1()+":"+tuple._2());
// }
//
// for(Tuple2<?,?> tuple: pairwordCnt) {
// Tuple2<String,String> p= (Tuple2<String, String>) tuple._1();
// System.out.println("pair count for {"+p._1()+" "+p._2()+"}:"+tuple._2());
// }
//
System.out.println("\n\n word: word_probability....");
for(Tuple2<?,?> p: temp1) {
String w1 = (String) p._1();
float c = (float)p._2();
System.out.println("probability of "+w1+": " +c);
}
System.out.println("\n\n (word pair): joint_probability....");
for(Tuple2<?,?> p: temp) {
String w2 = (String) p._1();
String w1 = (String) ((Tuple2<String, Float>) p._2())._1();
float c = (float) ((Tuple2<String, Float>) p._2())._2();
System.out.println("probabbility of ("+w1+" "+w2+"): "+c);
}
System.out.println("\n\n word pair :(joint_probability | word1_probability | word2_probability)....");
for(Tuple2<?,?> t: wpf) {
String w1 = ((Tuple2<String, String>) t._1())._1();
String w2 = ((Tuple2<String, String>) t._1())._2();
float cntp = ((Tuple3<Float, Float, Float>) t._2())._1();
float cnt1 = ((Tuple3<Float, Float, Float>) t._2())._2();
float cnt2 = ((Tuple3<Float, Float, Float>) t._2())._3();
System.out.println(w1+" "+w2+" :("+cntp+" | "+cnt1+" | "+cnt2+")");
}
System.out.println("\n\nThe phrases used are....");
for(Tuple2<?,?> t: wpFilter) {
String w1 = ((Tuple2<String, String>) t._1())._1();
String w2 = ((Tuple2<String, String>) t._1())._2();
float cntp = ((Tuple3<Float, Float, Float>) t._2())._1();
float cnt1 = ((Tuple3<Float, Float, Float>) t._2())._2();
float cnt2 = ((Tuple3<Float, Float, Float>) t._2())._3();
System.out.println(w1+" "+w2+" :("+cntp+" | "+cnt1+" | "+cnt2+")");
}
sc.close();
spark.stop();
}
}
@udion
Copy link
Author

udion commented Sep 21, 2017

 word: word_probability....
probability of sides: 0.013422819
probability of are: 0.0033557047
probability of ll: 0.0033557047
probability of can: 0.010067114
probability of need: 0.0033557047
probability of bright: 0.013422819
probability of have: 0.0033557047
probability of love: 0.08053691
probability of t: 0.0067114094
probability of dark: 0.013422819
probability of when: 0.0033557047
probability of mind: 0.0033557047
probability of brain: 0.0033557047
probability of build: 0.0033557047
probability of get: 0.0067114094
probability of as: 0.026845638
probability of apart: 0.0033557047
probability of start: 0.0033557047
probability of war: 0.0033557047
probability of who: 0.0033557047
probability of talk: 0.0033557047
probability of read: 0.0033557047
probability of go: 0.0033557047
probability of so: 0.0067114094
probability of make: 0.0033557047
probability of out: 0.0704698
probability of heart: 0.0033557047
probability of inside: 0.053691275
probability of collect: 0.0033557047
probability of well: 0.013422819
probability of open: 0.0033557047
probability of ou: 0.060402684
probability of me: 0.013422819
probability of thoughts: 0.0033557047
probability of up: 0.0033557047
probability of wanna: 0.010067114
probability of pick: 0.0067114094
probability of you: 0.093959734
probability of gonna: 0.077181205
probability of let: 0.013422819
probability of don: 0.0067114094
probability of a: 0.0033557047
probability of or: 0.0033557047
probability of i: 0.10067114
probability of that: 0.0033557047
probability of before: 0.0033557047
probability of to: 0.010067114
probability of know: 0.0067114094
probability of at: 0.0033557047
probability of in: 0.0067114094
probability of look: 0.0033557047
probability of pieces: 0.0033557047
probability of see: 0.013422819
probability of chest: 0.0033557047
probability of touch: 0.0033557047
probability of scales: 0.0033557047
probability of face: 0.0033557047
probability of reach: 0.0033557047
probability of bend: 0.0033557047
probability of but: 0.0033557047
probability of and: 0.010067114
probability of your: 0.030201342
probability of m: 0.077181205
probability of the: 0.030201342


 (word pair): joint_probability....
probabbility of (dark sides): 0.013422819
probabbility of (you are): 0.093959734
probabbility of (i ll): 0.10067114
probabbility of (i can): 0.10067114
probabbility of (i need): 0.10067114
probabbility of (t have): 0.0067114094
probabbility of (ll start): 0.0033557047
probabbility of (mind when): 0.0033557047
probabbility of (the bright): 0.030201342
probabbility of (don t): 0.0067114094
probabbility of (the dark): 0.030201342
probabbility of (your mind): 0.030201342
probabbility of (gonna love): 0.077181205
probabbility of (wanna build): 0.010067114
probabbility of (to get): 0.010067114
probabbility of (sides as): 0.013422819
probabbility of (you apart): 0.093959734
probabbility of (your brain): 0.030201342
probabbility of (a war): 0.0033557047
probabbility of (you who): 0.093959734
probabbility of (wanna talk): 0.010067114
probabbility of (can read): 0.010067114
probabbility of (you go): 0.093959734
probabbility of (open so): 0.0033557047
probabbility of (that make): 0.0033557047
probabbility of (inside out): 0.053691275
probabbility of (your heart): 0.030201342
probabbility of (love inside): 0.08053691
probabbility of (i collect): 0.10067114
probabbility of (as well): 0.026845638
probabbility of (chest open): 0.0033557047
probabbility of (out ou): 0.0704698
probabbility of (let me): 0.013422819
probabbility of (your thoughts): 0.030201342
probabbility of (you up): 0.093959734
probabbility of (t wanna): 0.0067114094
probabbility of (gonna pick): 0.077181205
probabbility of (build you): 0.0033557047
probabbility of (m gonna): 0.077181205
probabbility of (pieces that): 0.0033557047
probabbility of (you don): 0.093959734
probabbility of (start a): 0.0033557047
probabbility of (inside or): 0.053691275
probabbility of (can i): 0.010067114
probabbility of (need to): 0.0033557047
probabbility of (face before): 0.0033557047
probabbility of (to know): 0.010067114
probabbility of (look at): 0.0033557047
probabbility of (you in): 0.093959734
probabbility of (wanna look): 0.010067114
probabbility of (me see): 0.013422819
probabbility of (the pieces): 0.030201342
probabbility of (your chest): 0.030201342
probabbility of (i touch): 0.10067114
probabbility of (can reach): 0.010067114
probabbility of (your scales): 0.030201342
probabbility of (your face): 0.030201342
probabbility of (scales but): 0.0033557047
probabbility of (brain and): 0.0033557047
probabbility of (read your): 0.0033557047
probabbility of (i m): 0.10067114
probabbility of (as the): 0.026845638


 word pair :(joint_probability | word1_probability | word2_probability)....
can i :(0.0038610038 | 0.010067114 | 0.10067114)
you are :(0.0038610038 | 0.093959734 | 0.0033557047)
well as :(0.015444015 | 0.013422819 | 0.026845638)
wanna talk :(0.0038610038 | 0.010067114 | 0.0033557047)
at the :(0.0038610038 | 0.0033557047 | 0.030201342)
ou ou :(0.046332046 | 0.060402684 | 0.060402684)
ou out :(0.023166023 | 0.060402684 | 0.0704698)
bend your :(0.0038610038 | 0.0033557047 | 0.030201342)
when you :(0.0038610038 | 0.0033557047 | 0.093959734)
sides as :(0.015444015 | 0.013422819 | 0.026845638)
brain and :(0.0038610038 | 0.0033557047 | 0.010067114)
inside out :(0.057915058 | 0.053691275 | 0.0704698)
and pick :(0.0038610038 | 0.010067114 | 0.0067114094)
your thoughts :(0.0038610038 | 0.030201342 | 0.0033557047)
i wanna :(0.0038610038 | 0.10067114 | 0.010067114)
and can :(0.0038610038 | 0.010067114 | 0.010067114)
wanna look :(0.0038610038 | 0.010067114 | 0.0033557047)
make you :(0.0038610038 | 0.0033557047 | 0.093959734)
can read :(0.0038610038 | 0.010067114 | 0.0033557047)
i can :(0.0077220076 | 0.10067114 | 0.010067114)
face before :(0.0038610038 | 0.0033557047 | 0.0033557047)
your mind :(0.0038610038 | 0.030201342 | 0.0033557047)
me see :(0.015444015 | 0.013422819 | 0.013422819)
love i :(0.0038610038 | 0.08053691 | 0.10067114)
you in :(0.0077220076 | 0.093959734 | 0.0067114094)
love inside :(0.0077220076 | 0.08053691 | 0.053691275)
the bright :(0.015444015 | 0.030201342 | 0.013422819)
look at :(0.0038610038 | 0.0033557047 | 0.0033557047)
see the :(0.015444015 | 0.013422819 | 0.030201342)
or i :(0.0038610038 | 0.0033557047 | 0.10067114)
start a :(0.0038610038 | 0.0033557047 | 0.0033557047)
i touch :(0.0038610038 | 0.10067114 | 0.0033557047)
need to :(0.0038610038 | 0.0033557047 | 0.010067114)
your face :(0.0038610038 | 0.030201342 | 0.0033557047)
let me :(0.015444015 | 0.013422819 | 0.013422819)
i m :(0.08880309 | 0.10067114 | 0.077181205)
but you :(0.0038610038 | 0.0033557047 | 0.093959734)
m gonna :(0.08880309 | 0.077181205 | 0.077181205)
chest open :(0.0038610038 | 0.0033557047 | 0.0033557047)
gonna pick :(0.0038610038 | 0.077181205 | 0.0067114094)
as the :(0.015444015 | 0.026845638 | 0.030201342)
who you :(0.0038610038 | 0.0033557047 | 0.093959734)
your love :(0.0077220076 | 0.030201342 | 0.08053691)
as well :(0.015444015 | 0.026845638 | 0.013422819)
wanna build :(0.0038610038 | 0.010067114 | 0.0033557047)
love you :(0.08108108 | 0.08053691 | 0.093959734)
mind when :(0.0038610038 | 0.0033557047 | 0.0033557047)
and get :(0.0038610038 | 0.010067114 | 0.0067114094)
gonna love :(0.08494209 | 0.077181205 | 0.08053691)
inside or :(0.0038610038 | 0.053691275 | 0.0033557047)
so i :(0.0077220076 | 0.0067114094 | 0.10067114)
you who :(0.0038610038 | 0.093959734 | 0.0033557047)
that make :(0.0038610038 | 0.0033557047 | 0.0033557047)
build you :(0.0038610038 | 0.0033557047 | 0.093959734)
out ou :(0.011583012 | 0.0704698 | 0.060402684)
your chest :(0.0038610038 | 0.030201342 | 0.0033557047)
don t :(0.0077220076 | 0.0067114094 | 0.0067114094)
to know :(0.0077220076 | 0.010067114 | 0.0067114094)
the dark :(0.015444015 | 0.030201342 | 0.013422819)
collect your :(0.0038610038 | 0.0033557047 | 0.030201342)
you apart :(0.0038610038 | 0.093959734 | 0.0033557047)
to get :(0.0038610038 | 0.010067114 | 0.0067114094)
get to :(0.0038610038 | 0.0067114094 | 0.010067114)
have to :(0.0038610038 | 0.0033557047 | 0.010067114)
the pieces :(0.0038610038 | 0.030201342 | 0.0033557047)
you up :(0.0038610038 | 0.093959734 | 0.0033557047)
pick you :(0.0038610038 | 0.0067114094 | 0.093959734)
you don :(0.0077220076 | 0.093959734 | 0.0067114094)
before you :(0.0038610038 | 0.0033557047 | 0.093959734)
i collect :(0.0038610038 | 0.10067114 | 0.0033557047)
your scales :(0.0038610038 | 0.030201342 | 0.0033557047)
read your :(0.0038610038 | 0.0033557047 | 0.030201342)
get inside :(0.0038610038 | 0.0067114094 | 0.053691275)
know your :(0.0038610038 | 0.0067114094 | 0.030201342)
can reach :(0.0038610038 | 0.010067114 | 0.0033557047)
i need :(0.0038610038 | 0.10067114 | 0.0033557047)
your brain :(0.0038610038 | 0.030201342 | 0.0033557047)
your heart :(0.0038610038 | 0.030201342 | 0.0033557047)
t wanna :(0.0038610038 | 0.0067114094 | 0.010067114)
pick your :(0.0038610038 | 0.0067114094 | 0.030201342)
touch your :(0.0038610038 | 0.0033557047 | 0.030201342)
pieces that :(0.0038610038 | 0.0033557047 | 0.0033557047)
you go :(0.0038610038 | 0.093959734 | 0.0033557047)
i ll :(0.0038610038 | 0.10067114 | 0.0033557047)
scales but :(0.0038610038 | 0.0033557047 | 0.0033557047)
you inside :(0.046332046 | 0.093959734 | 0.053691275)
a war :(0.0038610038 | 0.0033557047 | 0.0033557047)
ll start :(0.0038610038 | 0.0033557047 | 0.0033557047)
dark sides :(0.015444015 | 0.013422819 | 0.013422819)
up and :(0.0038610038 | 0.0033557047 | 0.010067114)
reach your :(0.0038610038 | 0.0033557047 | 0.030201342)
open so :(0.0038610038 | 0.0033557047 | 0.0067114094)
t have :(0.0038610038 | 0.0067114094 | 0.0033557047)


The phrases used are....
you are :(0.0038610038 | 0.093959734 | 0.0033557047)
well as :(0.015444015 | 0.013422819 | 0.026845638)
wanna talk :(0.0038610038 | 0.010067114 | 0.0033557047)
at the :(0.0038610038 | 0.0033557047 | 0.030201342)
ou ou :(0.046332046 | 0.060402684 | 0.060402684)
bend your :(0.0038610038 | 0.0033557047 | 0.030201342)
when you :(0.0038610038 | 0.0033557047 | 0.093959734)
sides as :(0.015444015 | 0.013422819 | 0.026845638)
brain and :(0.0038610038 | 0.0033557047 | 0.010067114)
inside out :(0.057915058 | 0.053691275 | 0.0704698)
and pick :(0.0038610038 | 0.010067114 | 0.0067114094)
your thoughts :(0.0038610038 | 0.030201342 | 0.0033557047)
and can :(0.0038610038 | 0.010067114 | 0.010067114)
wanna look :(0.0038610038 | 0.010067114 | 0.0033557047)
make you :(0.0038610038 | 0.0033557047 | 0.093959734)
can read :(0.0038610038 | 0.010067114 | 0.0033557047)
face before :(0.0038610038 | 0.0033557047 | 0.0033557047)
your mind :(0.0038610038 | 0.030201342 | 0.0033557047)
me see :(0.015444015 | 0.013422819 | 0.013422819)
you in :(0.0077220076 | 0.093959734 | 0.0067114094)
the bright :(0.015444015 | 0.030201342 | 0.013422819)
look at :(0.0038610038 | 0.0033557047 | 0.0033557047)
see the :(0.015444015 | 0.013422819 | 0.030201342)
or i :(0.0038610038 | 0.0033557047 | 0.10067114)
start a :(0.0038610038 | 0.0033557047 | 0.0033557047)
i touch :(0.0038610038 | 0.10067114 | 0.0033557047)
need to :(0.0038610038 | 0.0033557047 | 0.010067114)
your face :(0.0038610038 | 0.030201342 | 0.0033557047)
let me :(0.015444015 | 0.013422819 | 0.013422819)
i m :(0.08880309 | 0.10067114 | 0.077181205)
but you :(0.0038610038 | 0.0033557047 | 0.093959734)
m gonna :(0.08880309 | 0.077181205 | 0.077181205)
chest open :(0.0038610038 | 0.0033557047 | 0.0033557047)
as the :(0.015444015 | 0.026845638 | 0.030201342)
who you :(0.0038610038 | 0.0033557047 | 0.093959734)
as well :(0.015444015 | 0.026845638 | 0.013422819)
wanna build :(0.0038610038 | 0.010067114 | 0.0033557047)
love you :(0.08108108 | 0.08053691 | 0.093959734)
mind when :(0.0038610038 | 0.0033557047 | 0.0033557047)
and get :(0.0038610038 | 0.010067114 | 0.0067114094)
gonna love :(0.08494209 | 0.077181205 | 0.08053691)
inside or :(0.0038610038 | 0.053691275 | 0.0033557047)
so i :(0.0077220076 | 0.0067114094 | 0.10067114)
you who :(0.0038610038 | 0.093959734 | 0.0033557047)
that make :(0.0038610038 | 0.0033557047 | 0.0033557047)
build you :(0.0038610038 | 0.0033557047 | 0.093959734)
your chest :(0.0038610038 | 0.030201342 | 0.0033557047)
don t :(0.0077220076 | 0.0067114094 | 0.0067114094)
to know :(0.0077220076 | 0.010067114 | 0.0067114094)
the dark :(0.015444015 | 0.030201342 | 0.013422819)
collect your :(0.0038610038 | 0.0033557047 | 0.030201342)
you apart :(0.0038610038 | 0.093959734 | 0.0033557047)
to get :(0.0038610038 | 0.010067114 | 0.0067114094)
get to :(0.0038610038 | 0.0067114094 | 0.010067114)
have to :(0.0038610038 | 0.0033557047 | 0.010067114)
the pieces :(0.0038610038 | 0.030201342 | 0.0033557047)
you up :(0.0038610038 | 0.093959734 | 0.0033557047)
you don :(0.0077220076 | 0.093959734 | 0.0067114094)
before you :(0.0038610038 | 0.0033557047 | 0.093959734)
i collect :(0.0038610038 | 0.10067114 | 0.0033557047)
your scales :(0.0038610038 | 0.030201342 | 0.0033557047)
read your :(0.0038610038 | 0.0033557047 | 0.030201342)
get inside :(0.0038610038 | 0.0067114094 | 0.053691275)
know your :(0.0038610038 | 0.0067114094 | 0.030201342)
can reach :(0.0038610038 | 0.010067114 | 0.0033557047)
i need :(0.0038610038 | 0.10067114 | 0.0033557047)
your brain :(0.0038610038 | 0.030201342 | 0.0033557047)
your heart :(0.0038610038 | 0.030201342 | 0.0033557047)
t wanna :(0.0038610038 | 0.0067114094 | 0.010067114)
pick your :(0.0038610038 | 0.0067114094 | 0.030201342)
touch your :(0.0038610038 | 0.0033557047 | 0.030201342)
pieces that :(0.0038610038 | 0.0033557047 | 0.0033557047)
you go :(0.0038610038 | 0.093959734 | 0.0033557047)
i ll :(0.0038610038 | 0.10067114 | 0.0033557047)
scales but :(0.0038610038 | 0.0033557047 | 0.0033557047)
a war :(0.0038610038 | 0.0033557047 | 0.0033557047)
ll start :(0.0038610038 | 0.0033557047 | 0.0033557047)
dark sides :(0.015444015 | 0.013422819 | 0.013422819)
up and :(0.0038610038 | 0.0033557047 | 0.010067114)
reach your :(0.0038610038 | 0.0033557047 | 0.030201342)
open so :(0.0038610038 | 0.0033557047 | 0.0067114094)
t have :(0.0038610038 | 0.0067114094 | 0.0033557047)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment