Могу ли я экспортировать переводы географических названий с сайта freebase.com?
-
09-06-2019 - |
Вопрос
Итак, я посмотрел на это использование принадлежащий бесплатная база API и я были очень впечатлены переводом найденного имени.Т.е. Рим, Рома, Ром, Рим, Роома,로마, 罗马市.Это потому, что у меня есть база данных, содержащая более 5000 названий мест, и мне бы очень хотелось, чтобы эти английские названия были переведены на французский, немецкий или корейский язык.
Проблема в том, что я провел около двух часов, просматривая бесплатную базу, и не смог найти способа просмотреть названия городов/мест на другом языке, сопоставленные с английским.Поэтому мне бы очень хотелось, чтобы кто-то, кто понимает, что такое бесплатная база данных и как она организована, мог бы дать мне ссылку на это представление, которую теоретически я мог бы затем экспортировать.
Кроме того, я просто хотел поделиться этим вопросом, потому что меня полностью впечатлила бесплатная база, и я думаю, что если люди еще не посмотрели на нее, им следует.
Решение
Запрос
[{
limit: 100,
type: '/location/location',
name: [{
value: null,
lang: {
name: {
value: null,
lang: '/lang/en',
},
}
}],
}];
возвращает для каждого местоположения и каждого языка название этого местоположения на этом языке.Результаты организованы по языкам.Например, вот очень небольшой сегмент возвращаемого значения:
{
'lang': {
'name': {
'lang': '/lang/en',
'value': 'Russian'
}
},
'value': 'Сан-Франциско'
},
{
'lang': {
'name': {
'lang': '/lang/en',
'value': 'Swedish'
}
},
'value': 'San Francisco'
},
{
'lang': {
'name': {
'lang': '/lang/en',
'value': 'Portuguese'
}
},
'value': 'São Francisco (Califórnia)'
},
Для решения без программирования скопируйте и вставьте следующее в HTML-файл и откройте его в браузере:
<html><head>
<script type="text/javascript" src="http://mjtemplate.org/dist/mjt-0.6/mjt.js"></script>
</head>
<body onload="mjt.run()">
<div mjt.task="q">
mjt.freebase.MqlRead([{
limit: 10,
type: '/location/location',
name: [{
value:null,
lang:{
name:{
value:null,
lang:'/lang/en',
},
}
}],
}])
</div>
<table><tr mjt.for="topic in q.result"><td>
<table><tr mjt.for="(var rowi = 0; rowi < topic.name.length; rowi++)"
mjt.if="rowi < topic.name.length" style="padding-left:2em"><td>
<pre mjt.script="">
var name = topic.name[rowi];
</pre>
${(name.lang['q:name']||name.lang.name).value}:
</td><td>$name.value</td></tr></table></td></tr></table></body></html>
Конечно, это будет включать только первые 10 результатов.Если хотите большего, увеличьте лимит выше.(Кстати, крут не только Freebase, но и этот язык шаблонов mjt!)
Другие советы
В размещенной вами ссылке используется mjt, платформа JavaScript, разработанная для Freebase.
Запрос, который они используют.
mjt.freebase.MqlRead([{
limit: 100,
id:qid,
/* allow fuzzy matches in the value for more results... */
/* 'q:name': {'value~=': qname, value:null, lang: '/lang/'+qlang}, */
'q:name': {value: qname, lang: '/lang/'+qlang},
type: '/common/topic',
name: [{
value:null,
lang:{
id:null,
name:{
value:null,
lang:'/lang/en',
optional:true
},
'q:name':{
value:null,
lang:'/lang/'+qlang,
optional:true
}
}
}],
article: [{id:null, limit:1}],
image: [{id:null, limit:1, optional:true}],
creator: null,
timestamp:null
}])
Где:qlang — это язык, который вы хотите перевести.qname — это местоположение для запроса.
Чтобы получить нужную ссылку, вам понадобится API, и вы можете преобразовать приведенный выше запрос в ссылку, которая вернет объект JSON, содержащий переведенную строку.