Так и сделал :). Разбил на два корпуса. Стандартная, вобщем, практика. names.txt — файлик создавался шафлом по списку женских и мужских имен.
А в чем результат завышен?
Ниже — код для тестирования.
def test(classifier, test_set):
hits = 0
for feats, label in test_set:
if label == classify(classifier, feats):
hits += 1
return hits/len(test_set)
def get_features(sample): return (
'll: %s' % sample[-1], # get last letter
'fl: %s' % sample[1], # get first letter
'sl: %s' % sample[0], # get second letter
)
if __name__ == '__main__':
samples = (line.decode('utf-8').split() for line in open('names.txt'))
features = [(get_features(feat), label) for feat, label in samples]
train_set, test_set = features[:-100], features[-100:]
classifier = train(train_set)
print 'Accuracy: ', test(classifier, test_set)
Согласен.
Продадут владельцы компанию, и что дальше? У них один путь — вкладывать и создавать новые компании. Но если эта им нравится, в чем смысл продажи.
Меня всегда такие новости радуют. Потому что из этого следует что ребята любят то, чем занимаются.
Странно. Посмотрите лекции по программированию стенфорда или мит. Будут там и байты и низкоуровневое барахло. И даже, о ужас, будут рассказывать как реализовывать контейнеры. Да, сейчас и память дешевле, и железо лучше. Вот только и информации больше. В некоторых приложениях экономия нескольких бит на структуру может сильно сократить весь объем.
У вас детерминированный автомат. Но не минимальный. Вы оптимизируете только префикс.
Сравните для слов word, ward. Ваше дерево будет содержать 8 узлов и 7 ребер (две ветви), в то время как минимальный DFA 5 и 5 (между вторым и третьим состоянием две дуги).
А, похоже я понял к чему вы. Т.е. изначальная задача стоит так: Есть набор слов. Необходимо определить, есть ли набор этих слов (или регэксп) в словаре.
В этом смысле вашу идею понял, интересно. Но думаю, здесь получится некоторое дублирование работы. В момент разбора регулярки словарь построит из нее то же дерево/авомат.
Было дело я тоже колдовал с экселем под линукс. Правда, остановился на xlwt и дописал поверх него утилитку для более простого построения. Может будет кому полезно: github.com/lightcaster/xlrep
А в чем результат завышен?
Ниже — код для тестирования.
Спасибо, почитаю.
Знаю хорошую реализацию в nltk. Но там посложнее. Я же хотел написать максимально просто и коротко.
Продадут владельцы компанию, и что дальше? У них один путь — вкладывать и создавать новые компании. Но если эта им нравится, в чем смысл продажи.
Меня всегда такие новости радуют. Потому что из этого следует что ребята любят то, чем занимаются.
Сравните для слов word, ward. Ваше дерево будет содержать 8 узлов и 7 ребер (две ветви), в то время как минимальный DFA 5 и 5 (между вторым и третьим состоянием две дуги).
В этом смысле вашу идею понял, интересно. Но думаю, здесь получится некоторое дублирование работы. В момент разбора регулярки словарь построит из нее то же дерево/авомат.