Лучший способ возвратить язык данной строки

Класс статьи:

public class Article : INotifyPropertyChanged
{
    public ObservableCollection<ArticleLocation> locations;
    public string Location { 
        get => location; 
        set
        {
            if (location == null || !location.Equals(value))
            {
                 location = value;
                 RaisePropertyChanged("Location");
            }
        }
    }
}

Класс статьиLocation:

public class ArticleLocation : INotifyPropertyChanged
{
    private string location;

    public string Location { 
        get => location; 
        set
        {
            if (location == null || !location.Equals(value))
            {
                location = value;
                RaisePropertyChanged("Location");
            }
        }
    }
}

в вашем классе xaml.cs:

public MainWindow()
{
    InitializeComponent();
    Article article = new Article();
    this.DataContext = article;
}
7
задан 3 revs, 2 users 67%user8359 23 May 2017 в 09:57
поделиться

3 ответа

Одна опция состояла бы в том, чтобы использовать байесовский классификатор такой в качестве Преподобного. Преподобная домашняя страница дает это предложение для наивного детектора языка:

from reverend.thomas import Bayes
guesser = Bayes()
guesser.train('french', 'le la les du un une je il elle de en')
guesser.train('german', 'der die das ein eine')
guesser.train('spanish', 'el uno una las de la en')
guesser.train('english', 'the it she he they them are were to')
guesser.guess('they went to el cantina')
guesser.guess('they were flying planes')
guesser.train('english', 'the rain in spain falls mainly on the plain')
guesser.save('my_guesser.bay')

Обучение с более сложными маркерными наборами усилило бы результаты. Для получения дополнительной информации о байесовской классификации посмотрите здесь и здесь.

13
ответ дан 6 December 2019 в 08:17
поделиться

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

-1
ответ дан 6 December 2019 в 08:17
поделиться

Простой статистический метод, который я использовал прежде:

Получите достойную сумму демонстрационного учебного текста на языке, который Вы хотите обнаружить. Разделите его на триграммы, например.

"Привет foobar" в триграммах: 'Hel', 'эль', 'Лло', 'lo', 'o f', 'fo', 'нечто', 'oob', 'oba', 'панель'

Для всех исходных данных подсчитайте частоту возникновения каждой триграммы, по-видимому, в dict где key=trigram и value=frequency. Можно ограничить это лучшими 300 самыми частыми 3 сочетаниями букв или чем-то, если Вы хотите. Засолите dict далеко где-нибудь.

Чтобы сказать, записан ли новый образец текста на том же языке, повторите вышеупомянутые шаги для демонстрационного текста. Теперь, все, что необходимо сделать, вычисляют корреляцию между демонстрационными частотами триграмм и учебными частотами триграмм. Необходимо будет играть с ним немного для выбора пороговой корреляции, выше которой Вы готовы полагать, что вход является турецким или нет.

Этот метод, как показывали, был очень точен, сбивая более сложные методы, посмотрите

Cavnar & Trenkle (1994): "Классификация текстов N-Gram-Based"

Используя триграммы решает проблему использования списков слов, поскольку существует огромное количество слов на любом данном языке, особенно учитывая различные грамматические перестановки. Я попытался искать общие слова, проблема, они часто дают ложь, положительную для некоторого другого языка, или они имеют много перестановок. Статистический метод не требует большого пространства памяти и не требует сложного парсинга. По тому, как этот метод только работает на языки с фонетической системой письменности, он работает плохо, если вообще с языками, которые используют идеографический язык (т.е. китайский язык, японский язык, корейский язык).

Кроме того, Википедия имеет раздел по турецкому языку в его удобной диаграмме распознавания языка.

10
ответ дан 6 December 2019 в 08:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: