2015-10-11 3 views
0

Я собрал более 20 000 юридических документов в формате PDF. Я адвокат, но также я пишу компьютерные программы, чтобы помочь с моей практикой в ​​MFC/VC++. Я бы хотел научиться использовать нейронные сети (к сожалению, мои математические навыки ограничены алгеброй колледжа), чтобы классифицировать документы, поданные в судебные процессы.Почему моя нервная сеть не тренируется?

Моя первая цель состоит в том, чтобы обучить трехслойную прямую нейронную сеть, чтобы определить, является ли документ небольшим документом претензий (с буквами «SP» в номере дела) или является ли он обычным документом (с буквы «CC» в номере дела). Каждый адвокат ставит некоторый вариант слова «Случай:» или «Случай №» или «Номер дела» или один из бесконечных вариантов этого. Таким образом, я взял первые 600 символов (все адвокаты помещают номер дела в первые 600 символов) и создают базу данных CSV с каждой строкой, являющейся одним документом, с 600 столбцами, содержащими коды ASCII первых 600 символов, и 601-й символ является либо «1» для обычных случаев, либо «0» для небольших претензий.

затем я запускаю его через нейронные сети программы кодированного здесь: https://takinginitiative.wordpress.com/2008/04/23/basic-neural-network-tutorial-c-implementation-and-source-code/ (Естественно, я обновить программу для обработки 600 нейронов, с одним выходом), но когда я бегу через точности ужасно - что-то вроде 2% на данные обучения и 0% общего набора. 1/8 документов относится к делам, не относящимся к числу мелких претензий.

Является ли это проблемой, с которой может справиться Neural Net? Что я делаю не так?

ответ

0

Таким образом, я взял первые 600 символов (все адвокаты помещают номер дела в первые 600 символов) и создает базу данных CSV с каждой строкой, являющейся одним документом, с 600 столбцами, содержащими коды ASCII первые 600 символов, а 601-й символ - либо «1» для обычных случаев, либо «0» для небольших претензий.

Глядя на каждый символ в начале документа, независимо, будет очень неточным. Вместо того, чтобы считать символов самостоятельно, сначала подпишите первые 600 символов в слова. Используйте эти слова в качестве входных данных для вашей нейронной сети, а не для отдельных символов.

Обратите внимание, что после того, как вы выделили первые 600 символов, вы можете найти отчетливо конечный список токенов, который означает «номер дела», устраняя необходимость в нейронной сети.

Эта функция обеспечивает Standford Natural Language Processor. Вы можете найти совместимую с .NET реализацию available in NuGet.

+0

Спасибо. Можете ли вы рассказать мне, почему использование токенизированных слов вместо отдельных символов является неточным? В конце концов я хотел бы создать что-то, что будет определять номера случаев и классифицировать документы (это открытие, это ответ на жалобу, это ответ на документ, который был предложен две недели назад), и, возможно, в конце концов, даже машина предлагает ответ на документы, предложенные на основе изучения предыдущих документов, которые были созданы другими юристами. Мне просто интересно, насколько мы можем заменить профессионалов-юристов машинами. – yzcyxisyxuyz

+0

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

+0

Большое вам спасибо. Это проливает свет на него. Я попробую. Итак, есть ли формула или метод, который будет определять, насколько большой должен быть набор данных для обработки любой заданной проблемы NN? Просто из любопытства, насколько большой должен был быть набор данных? В пределах этих 600 символов есть либо SP, либо CC, окруженный цифрами, тире или пробелами.Неужели это такая сложная проблема, что NN не может понять это с 20000 документами? Вау. Еще раз спасибо. – yzcyxisyxuyz

Смежные вопросы