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

Итак, я посмотрел на это использование API freebase , и меня по-настоящему поразили переводы найденного имени. IE Рим, Рома, Ром, Ржим, Рома, 로마, 罗马 市. Это потому, что у меня есть база данных с более чем 5000 именами мест, и я бы очень хотел, чтобы все переводы на английский, французский, немецкий или корейский языки были такими.

Проблема в том, что я потратил около двух часов, щелкая мышью по бесплатной базе, и не смог найти способа узнать названия городов / населенных пунктов на другом языке, сопоставленном с английским. Так что я бы хотел, чтобы кто-то, кто понимает, что такое freebase и как он организован, мог бы дать мне ссылку на это представление, которое теоретически я мог бы затем экспортировать.

Также я просто хотел поделиться этим вопросом, потому что я полностью впечатлен freebase и думаю, что если люди не смотрели на него, они должны.

Ответы [ 2 ]

4 голосов
/ 29 августа 2008

Запрос

[{
     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 и откройте его в браузере:

<code><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];
  
$ {(Name.lang [ 'д: имя'] || name.lang.name) .value}: $ name.value

Конечно, это будет включать только первые 10 результатов. Увеличьте лимит выше, если вы хотите больше. (Кстати, Freebase не только классный, но и язык шаблонов mjt!)

4 голосов
/ 29 августа 2008

Ссылка, которую вы разместили, использует 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, содержащий переведенную строку.

...