我正在写一个游戏,围绕着猜测其他语言中的单词意味着什么。例如,猜测什么";hola";意思是英语。对于这个游戏,我正在创建一个评分系统,使用单词(来自谷歌N Gram(被猜测的频率来分配分数。基本上,出现的次数少=得分多。然而,当我试图通过将单词保存为R的Java字符串发送时,我意识到我不知道该怎么办
到目前为止,我已经尝试过用rJava来发送这个词,但我很难让它发挥作用。如果有一个有R经验的人能帮我解决这个问题,我将不胜感激。
生成单词的Java类:
import java.util.Scanner;
import java.util.Random;
import java.io.File;
import java.io.IOException;
//this program gathers the words to be translated
//for game 1
public class dictionary {
private String line;
public dictionary() {
this.line = "";
}
public dictionary (String line) {
//getting word
try {
this.line = line;
Random random = new Random();
Scanner in = new Scanner (System.in);
int count = 0;
int rand = 1 + random.nextInt(8110);
//read file name from standard input
File file = new File("words.txt");
//overwrite scanner to read file
in = new Scanner(file);
while (in.hasNextLine() && count != rand) {
this.line = in.nextLine();
count = count + 1;
}
in.close();
}
catch(IOException e) {
System.out.println("File does not exist.");
}
}
public String getLine() {
return this.line;
}
}
我想出的R代码。目标是从Java单词(行(中提取单词:
library("ngramr")
library("rJava")
.jinit(parameters = getOption("java.parameters")
.jcall("java/lang/String", returnSig = "S", method = "getLine", evalString = TRUE)
word <- .jclassString("string", "line")
ngram(word, year_start = 1800, smoothing = 0)
奖金:此外,如果有人熟悉Google Ngram,知道如何在R中记录单词的实例数量并将其发送到Java,请告诉我,因为它是评分系统的关键部分。
我最初发布这个问题已经有几个星期了。从那以后,我通过使用Python套接字而不是R找到了解决这两个问题的方法。如果有人对我是如何做到这一点感兴趣,那就在我的GitHub中。然而,我将把这个问题留在这里,希望有人能为其他有类似问题的人回答这个问题。