У меня есть база данных, из которой я читаю. Я хочу идентифицировать язык в определенной ячейке, определенной столбцом. Я использую библиотеку langid для python.Различия в идентификации языка langid
Я прочитал из моей базы данных, как это:
connector = sqlite3.connect("somedb.db")
selecter = connector.cursor()
selecter.execute(''' SELECT tags FROM sometable''')
for row in selecter: #iterate through all the rows in db
#print (type(row)) #tuple
rf = str(row)
#print (type(rf)) #string
lan = langid.classify("{}".format(rf))
Технически, это работает. Он идентифицирует используемые языки, а затем (не отображается здесь) записывает идентифицированный язык обратно в базу данных.
Итак, теперь наступает странная часть. Я хотел бы дважды проверить некоторые результаты вручную. Поэтому у меня есть такие слова:
a = "shadow party people bw music mer white man black france men art nature monochrome french fun shoe sand nikon europe noir noiretblanc sable playa poetic nb ombre shade contraste plage blanc saxophone dunkerque nord homme musique saxo artiste artistique musicien chaussure blancandwhite d90 saxophoniste zyudcoote"
Когда я выполнить идентификацию языка на database
она строит мне португальцы в базу данных. Но, выполняя это следующим образом:
a = "shadow party people bw music mer white man black france men art nature monochrome french fun shoe sand nikon europe noir noiretblanc sable playa poetic nb ombre shade contraste plage blanc saxophone dunkerque nord homme musique saxo artiste artistique musicien chaussure blancandwhite d90 saxophoniste zyudcoote"
lan = langid.classify(a)
Ну, что возвращает меня французский. Кроме того, он не является ни французским, ни португальским, почему он возвращает разные результаты ?!
Эй, я работаю в Python 3.3 и выполняю 'str (row)' does not return '(tags),'. Я перебираю базу данных и получаю разные результаты для каждой строки. Если каждая строка будет «(теги)», тогда язык должен быть одинаковым для каждой строки. Я думаю, что я также рассматриваю вопросы кодирования. Я создаю поле с именем «FIELD NAME, TEXT», которое по умолчанию задает кодировку от SQLite до 'UTF-8'. Данные, которые я получаю, являются скриншотами из API flickr, но в соответствии с их документацией 'UTF-8'. – Stophface
Под «тегами» я подразумеваю содержимое поля тегов ... Не буквальная строка 'tags'. Вы передаете строчный кортеж для классификации. Я сомневаюсь, что проблема вызвана этим, но неправильно передавать это как строку, и вы должны исправить это, чтобы устранить ее как проблему. – mhawke
Недоразумение. Я передаю его так: 'a = '. .join (row)'. Лучше? – Stophface