2017年华东师范大学校赛
来源:互联网 发布:阿里云快照是什么意思 编辑:程序博客网 时间:2024/04/19 23:25
題目鏈接
題意簡述如下:
給定一篇字母形式的真實語料,判斷是英文,是中文還是日文。
在解題之前,我先大喊三聲計算語言學大法好,在別人的博客裏看到華師校賽有這樣的題目我就興奮地跑過來馬上A掉了。出題人腦洞很大啊。
數據給的是真實語料,所以語言特徵是很明顯的。因此,我們觀察一下文本規律即可。
英文的規律:
有如下不符合其他兩種語言拼寫方式的特徵詞,一旦出現即可判定:is, are, in, and。
中文(拼音)的規律:
聲母最多兩個字母,韻母最多三個字母。所以,單詞長度絕對是不會超過5的。爲了保險起見我們設定長度閾值爲6,即:若整篇文章所有的單詞的長度都不超過6,就判定爲中文。(這個長度閾值只能往大裏改,而不能往小裏改。)
日文(羅馬音)就不需要找規律了,剩下的就是日文。文本中的單詞可以以如下方式存在:
- 單獨元音。
- 連續的元音。
- 輔音+元音。
- (3)和其他形態的組合,其中可能含有連續的輔音(拗音及促音)。
這些都無所謂了(逃)。
代碼如下:
#include<bits/stdc++.h>using namespace std;main(){ string s; int len_less_than_six = 1; while(cin >> s){ for(int i = 0;i<s.size();i++){ if(s[i] == '.'|| s[i] == '\'' || s[i] == '?' || s[i] == ','||(s[i]>='0' && s[i]<='9')) { s[i] = '\0'; break; } } if(s == "is" || s == "are" || s == "in" || s == "and"){ cout << "English" << endl;return 0;} if(s.size()>6) len_less_than_six = 0; } if(len_less_than_six) cout << "Chinese" << endl; else cout << "Japanese" << endl;}
評注:
真實的語言識別遠遠沒有這麼簡單。拉丁語系的語言,區分起來應該需要不小的語料。
還是要計算一下特徵向量……
阅读全文
0 0
- 2017年华东师范大学校赛
- 第十四届北京师范大学校赛 A题 check in
- 长安大学校赛-2017
- 2017年西北大学校赛题解
- 湘潭大学校赛
- 2017年华东师范大学网络赛 A
- 2017年华东师范大学网络赛 C
- 2017年华东师范大学网络赛 E
- 2017年华东师范大学网络赛 F
- 2017年华东师范大学网络赛 G
- 中山大学校赛热身赛
- 东北大学校赛重现
- 2017浙江理工大学校赛D题
- 2017浙江理工大学校赛E题
- 2017浙江理工大学校赛I题
- 2017浙江理工大学校赛H题
- 2017浙江理工大学校赛A题
- 2017武汉大学校赛网络预选赛b题
- 一天建成罗马
- Ubuntu无法联网
- 离散题目9(判断是否为单射函数)
- python自学 hello word(一)
- 图形数据库Neo4J简介
- 2017年华东师范大学校赛
- PHP微信小程序解决方案PhpMall
- js的原型及原型链探究
- 读取txt
- java连接数据库(sqlserver,mysql,oracle)附jar包
- Unity Shader
- 高性能可扩展mysql(电商数据库设计构思)
- 离散题目10(判断是否为满射函数 )
- Python集合