Parsing 根据词频计数(数字)重新创建歌词(单词)

Parsing 根据词频计数(数字)重新创建歌词(单词),parsing,text,processing,frequency,term,Parsing,Text,Processing,Frequency,Term,我试图从词频计数中“重现”歌词。我有两个源数据文件。第一个是我正在使用的歌词语料库中最常用的5000个词的列表,按最常用(1)到最不常用(5000)的顺序排列。第二个文件是歌词语料库本身,由20多万首歌曲组成 每个“song”都是一个逗号分隔的字符串,如下所示:“SONGID1,SONGID2,1:13,2:10,4:6,7:15,…”,其中前两个条目是歌曲的ID标签,后面是术语(冒号左边的数字)和该术语在歌曲中使用的次数(冒号右边的数字)。在上面的例子中,这意味着“I”(5000个最常用术语中

我试图从词频计数中“重现”歌词。我有两个源数据文件。第一个是我正在使用的歌词语料库中最常用的5000个词的列表,按最常用(1)到最不常用(5000)的顺序排列。第二个文件是歌词语料库本身,由20多万首歌曲组成

每个“song”都是一个逗号分隔的字符串,如下所示:“SONGID1,SONGID2,1:13,2:10,4:6,7:15,…”,其中前两个条目是歌曲的ID标签,后面是术语(冒号左边的数字)和该术语在歌曲中使用的次数(冒号右边的数字)。在上面的例子中,这意味着“I”(5000个最常用术语中的第一个条目“1”)在这首歌中出现13次,而“the”(第二个最常用术语)出现10次,依此类推

我想做的是从这个“termID:termCount”格式到实际“重建”原始(尽管是混乱的)歌词,在这里我将冒号左边的数字设置为实际的术语,然后在冒号右边列出这些术语的正确次数。同样,使用上面的简短示例,我首选的结果输出将是:“SONGID1、SONGID2、I和…”等等。谢谢

也许以下(未经测试的)内容会启发你。您没有说明希望如何输出,因此可能需要将
print()
s更改为文件写入或其他内容

//假设每个单词都在自己的行上,从最常见到最不常见排序
String[]words=loadStrings(“words.txt”);
//两种方法:
//loadStrings()再次出现,但大文件占用了大量内存。
//缓冲读取器,它更复杂,但适用于大文件。
BufferedReader reader=createReader(“songs.txt”);
字符串行=reader.readLine();
while(行!=null){
String[]data=line.split(“,”);
打印(数据[0]+”,“+数据[1]);//两个歌曲ID
对于(inti=2;i