Могу ли я экспортировать переводы географических названий с сайта freebase.com?

StackOverflow https://stackoverflow.com/questions/33484

  •  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 &lt; topic.name.length; rowi++)"
  mjt.if="rowi &lt; 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, содержащий переведенную строку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top