你没遇见过每个字都认识但是组成句子就不认识的吗
[脑洞] 一边学英语一边玩游戏(undertale)
有没有认识 3dm 汉化组的?求一份铲子骑士的文本。铲子骑士有不少古英语。
很久以前就有的想法。我们可以把游戏里面出现过的单词全部找出来,然后导入背单词软件。等单词背完了就可以玩游戏了。
基本上来说就没有词汇的障碍了。而且也可以在玩游戏的过程中复习单词。
下面就开始动手了
1 找出undertale里全部的剧情文本,已经有人做好了。
https://pastebin.com/SkG4SMHP
2 提取出全部的英文词汇并且去重复。 这个简单,正则提取一下就好了。
3 因为有些词是名词的复数,或者动词的各种进行时。所以需要把它还原
用了 stanford 的 nlp 工具。再排除一下非英语词汇的词。例如 zzzzzzzzz 这种字符组合
4 把全部单词导入到被单词软件,例如扇贝单词
分析以及导入的代码如下。源码就20行。
过滤单词用的是github上的词汇列表 https://github.com/dolph/dictionary
因为switch已经那个啥了,所以八方旅人的词汇应该也全部可以导出了。到时候先过一遍单词,就可以熟练玩游戏了。
有没有认识 3dm 汉化组的?求一份铲子骑士的文本。铲子骑士有不少古英语。
很久以前就有的想法。我们可以把游戏里面出现过的单词全部找出来,然后导入背单词软件。等单词背完了就可以玩游戏了。
基本上来说就没有词汇的障碍了。而且也可以在玩游戏的过程中复习单词。
下面就开始动手了
1 找出undertale里全部的剧情文本,已经有人做好了。
https://pastebin.com/SkG4SMHP
2 提取出全部的英文词汇并且去重复。 这个简单,正则提取一下就好了。
3 因为有些词是名词的复数,或者动词的各种进行时。所以需要把它还原
用了 stanford 的 nlp 工具。再排除一下非英语词汇的词。例如 zzzzzzzzz 这种字符组合
4 把全部单词导入到被单词软件,例如扇贝单词
分析以及导入的代码如下。源码就20行。
过滤单词用的是github上的词汇列表 https://github.com/dolph/dictionary
因为switch已经那个啥了,所以八方旅人的词汇应该也全部可以导出了。到时候先过一遍单词,就可以熟练玩游戏了。
评论
@ptwxhq 游戏中应该很少出现比较复杂的语法句式吧 最要命的还是词汇量的不足
@luanwu1997 八方旅人还有古语
File wordsFile = new File("/Users/diamondyuan/Downloads/words_alpha.txt");
List<String> words = FileUtil.toLines(wordsFile);
File file = new File("/Users/diamondyuan/Downloads/undertale.txt");
List<String> wordsList = FileUtil.toLines(file);
Set<String> wordsSet = new HashSet<>();
wordsList.forEach(o -> {
String[] split = o.toLowerCase().split("([^a-z]+)'*\\1*");
wordsSet.addAll(Arrays.asList(split));
});
Lemmatization lemmatization = new Lemmatization();
Set<String> result = new HashSet<>();
wordsSet.forEach(o -> {
result.addAll(lemmatization.lemmatize(o).stream().filter(
words::contains
).collect(Collectors.toList()));
});
result.forEach(System.out::println);
System.out.println(result.size());
List<String> words = FileUtil.toLines(wordsFile);
File file = new File("/Users/diamondyuan/Downloads/undertale.txt");
List<String> wordsList = FileUtil.toLines(file);
Set<String> wordsSet = new HashSet<>();
wordsList.forEach(o -> {
String[] split = o.toLowerCase().split("([^a-z]+)'*\\1*");
wordsSet.addAll(Arrays.asList(split));
});
Lemmatization lemmatization = new Lemmatization();
Set<String> result = new HashSet<>();
wordsSet.forEach(o -> {
result.addAll(lemmatization.lemmatize(o).stream().filter(
words::contains
).collect(Collectors.toList()));
});
result.forEach(System.out::println);
System.out.println(result.size());
最主要的难度是游戏破解提取文字。如果有人能认识汉化组把汉化之前的文本要出来就好了。
另外其实之前以及有人造好类似的轮子了,叫 爱英阅。可以把一本书里的全部词汇全部提取。
还可以排除认识的单词。排除 生僻度高的单词。建立自己的词库。
另外其实之前以及有人造好类似的轮子了,叫 爱英阅。可以把一本书里的全部词汇全部提取。
还可以排除认识的单词。排除 生僻度高的单词。建立自己的词库。
@mogennju 用墨墨背单词可以导入 一共4701个单词。
@gymepc 这样很影响游戏体验的
@gymepc 这个词表不能直接用的。我背单词用的是扇贝。我是把自己会的单词导出,然后从4701个中排除,然后再导入扇贝的生词库,这样以后才开始背单词的。
@zcllzzx 英文文本也不行吗。
我个人觉得语言的应用是需要语境的,单纯的把单词挑出来然后翻译成(并不那么贴切的)中文,或许不如把它放进具体一段话中去理解。当然这只是我自己惯用的方法
如果语法知识和语感比较好,并且不强求每个词都要认得的话,读大部分句子应该是不需要查词的,因为可以根据上下文去理解然后猜词。这样去学单词可能认词效率会更高,因为加入了自己的认知过程
最恶心心的是自创词汇,一些奇幻作品比如DA里到处都是。这种词儿可能查都查不到意思,得直接去查词根…… 还有阿瓦隆这种大神负责写剧本的CRPG,异域镇魂曲和永恒之柱之类的,一个句子七八行,里面五六个状语从句,省略主语是家常便饭,真实专八备考软件
如果语法知识和语感比较好,并且不强求每个词都要认得的话,读大部分句子应该是不需要查词的,因为可以根据上下文去理解然后猜词。这样去学单词可能认词效率会更高,因为加入了自己的认知过程
最恶心心的是自创词汇,一些奇幻作品比如DA里到处都是。这种词儿可能查都查不到意思,得直接去查词根…… 还有阿瓦隆这种大神负责写剧本的CRPG,异域镇魂曲和永恒之柱之类的,一个句子七八行,里面五六个状语从句,省略主语是家常便饭,真实专八备考软件
回复不能