Извлечение функций n-грамм из справочника по текстовым компонентам

API популярных социальных сервисов

Сформировать текстовый корпус возможно используя инструменты API социальных сетей, например Vk API или YouTube API. В этом случае для анализа доступны такие данные, как записи и ответы на стенах, комментарии под фотографиями и видео, описания профилей пользователей, описания сообществ и другие. Как правило, такие API имеют открытый, но ограниченный доступ: например, не более 500 запросов в сутки.

Данные социальных сетей позволяют выявить поведенческие характеристики пользователей и проверить гипотезы их социального взаимодействия.

Преимущества

  • Бесплатно.
  • Гибкий способ настройки методов API и получение только необходимой исследователю информации.
  • «Живые» данные, то есть те, что созданы сами пользователями.

Недостатки

  • Необходимо владеть хотя бы базовыми навыками программирования.
  • Наличие количественных и иногда качественных ограничений на доступ к информации. Например, API Instagram не позволяет выгружать фотографии пользователей.

Работа и ограничения [ править ]

Запятые разделяют вводимые пользователем условия поиска, указывая каждое отдельное слово или фразу для поиска. Ngram Viewer возвращает построенную линейную диаграмму в течение нескольких секунд после нажатия пользователем клавиши Enter или кнопки «Поиск» на экране.

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

Из-за ограничений на размер базы данных Ngram, только совпадения, найденные по крайней мере в 40 книгах, индексируются в базе данных; иначе база данных не смогла бы сохранить все возможные комбинации.

Обычно поисковые запросы не могут заканчиваться знаками препинания, хотя можно искать отдельную точку (точку). Кроме того, конечный вопросительный знак (например, «Почему?») Вызовет второй поиск вопросительного знака отдельно.

Пропуск точек в сокращениях позволит использовать форму сопоставления, например, использование «R M S» для поиска «RMS» по сравнению с «RMS».

Использование стоп-слов

Следующий уровень нормализации состоит в использовании фильтров, направленных на выявление и очистку встречаемых стоп-слов. Базовый набор таких слов в русском языке включает в себя предлоги, частицы, местоимения и междометия, например: «я», «он», «как», «что», «уже», «вот» и другие. Часто при анализе узкоспециализированных текстов очищают самые встречаемые слова. Например, отчеты компании Яндекс будут содержать много упоминаний на собственный бренд, в связи с этим такие названия могут войти в список стоп-слов наравне с предлогами и другими.

Применяя фильтр для ранее нормализованного предложения, получим:

Перед Feature Extraction: 5 NLP-операций для обработки текста

Перед тем, как запускать извлечение признаков из текста, его нужно предварительно подготовить – сделать пригодным для обработки алгоритмами машинного обучения (Machine Learning). Для этого необходимо выполнить над текстом следующие операции :

  1. Токенизация – разбиение длинных участков текста на более мелкие (абзацы, предложения, слова). Токенизация – это самый первый этап обработки текста.
  2. Нормализация – приведение текста к «рафинированному» виду (единый регистр слов, отсутствие знаков пунктуации, расшифрованные сокращения, словесное написание чисел и т.д.). Это необходимо для применения унифицированных методов обработки текста. Отметим, что в случае текста термин «нормализация» означает приведение слов к единообразному виду, а не преобразование абсолютных величин к единому диапазону.
  3. Стеммизация – приведение слова к его корню путем устранения придатков (суффикса, приставки, окончания).
  4. Лемматизация – приведение слова к смысловой канонической форме слова (инфинитив для глагола, именительный падеж единственного числа — для существительных и прилагательных). Например, «зарезервированный» — «резервировать», «грибами» — «гриб», «лучший» — «хороший».
  5. Чистка – удаление стоп-слов, которые не несут смысловой нагрузки (артикли, междометья, союзы, предлоги и т.д.).

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


Принцип лемматизации в Text Mining

Озвучивание при форматировании

Чтобы узнать, отформатирован ли текст, поместите в него курсор и нажмите Ctrl + Alt + a, затем f (в Windows и Chrome OS) или Ctrl + ⌘ + a, затем f (в Mac OS). 

Чтобы просмотреть и изменить параметры форматирования, выполните следующие действия:

  1. Откройте меню «Формат» с помощью быстрых клавиш для вашего браузера.
    • В Chrome для Windows: Alt + o.
    • В других браузерах для Windows: Alt + Shift + o. 
    • В Chrome OS: Alt + o.
    • В Mac OS: сначала нажмите Ctrl + Option + Tab, а затем Ctrl + Option  + o.
  2. Прослушайте варианты, нажимая СТРЕЛКУ ВНИЗ. Чтобы выбрать действие, нажмите клавишу Ввод.

Подробнее о создании, редактировании и форматировании документов…

Как выполнить анализ текста?

Анализ тек­ста заклю­ча­ет­ся в опре­де­ле­нии его глав­ных пара­мет­ров. Его мож­но выпол­нить с помо­щью сле­ду­ю­ще­го алгоритма:

Алгоритм анализа текста

  1. Прочитать текст.
  2. Дать загла­вие, если его нет.
  3. Указать тему текста.
  4. Определить идею текста.
  5. Выявить стиль и тип речи.
  6. Указать ком­по­зи­цию.
  7. Проанализировать сред­ства выразительности.
  8. Указать сред­ства свя­зи меж­ду предложениями.

Примеры

Нежданный гость.

Анализ тек­ста

  • тема — неждан­ный гость;
  • идея — наход­чи­вость Фёдора;
  • худо­же­ствен­ный стиль речи;
  • тип речи — повествование;
  • ком­по­зи­ция  — завяз­ка, раз­ви­тие дей­ствия, куль­ми­на­ция, развязка;
  • образ­ные сред­ства: эпи­те­ты (неуго­мон­ный ручей, ноч­ное небо, удуш­ли­вый дым), оли­це­тво­ре­ния (ночь уку­та­ла, звез­ды смот­рят, спра­ши­ва­ют), мета­фо­ра (любо­пыт­ные звёз­ды), пери­фраз (хозя­ин тай­ги);
  • сред­ства свя­зи: лек­си­че­ский повтор (ночь, ручей, костер), части­ца (толь­ко), место­име­ния (в него, мы, они, на нас), наре­чия, союз (ско­ро, тут, а затем)

Что такое мен­таль­ная арифметика?

Анализ тек­ста

  • тема — мен­таль­ная арифметика;
  • идея — раз­ви­тие интел­лек­та ребенка;
  • пуб­ли­ци­сти­че­ский стиль речи с эле­мен­та­ми науч­но­го сти­ля (мате­ма­ти­че­ские термины);
  • тип речи — описание;
  • ком­по­зи­ция — общие све­де­ния, при­зна­ки опи­сы­ва­е­мо­го спо­со­ба обу­че­ния, вывод;
  • сред­ства свя­зи: повто­ры (мен­таль­ная ариф­ме­ти­ка, раз­ви­тие, счё­тах, счё­тов, сво­е­го вооб­ра­же­ния, в сво­ем вооб­ра­же­нии), союз «то есть», сино­ни­мы (ребя­та — дети), пери­фраз (раз­ви­тие интел­лек­та — раз­ви­тие умствен­ных спо­соб­но­стей).

Корпуса

В корпус используемые для поиска, состоят из файлов total_counts, 1-граммов, 2-граммов, 3-граммов, 4 граммов и 5 граммов для каждого языка. Формат файла каждого из файлов: данные, разделенные табуляцией. Каждая строка имеет следующий формат:

  • total_counts файл
    год TAB match_count TAB page_count TAB volume_count NEWLINE
  • Файл ngram версии 1 (создан в июле 2009 г.)
    ngram TAB год TAB match_count TAB page_count TAB volume_count NEWLINE
  • Файл ngram версии 2 (создан в июле 2012 г.)
    ngram TAB год TAB match_count TAB volume_count NEWLINE

Средство просмотра Google Ngram использует match_count для построения графика.

Например, слово «Википедия» из файла версии 2 с английскими 1-граммами хранится следующим образом:

ngram год match_count volume_count
Википедия 1904 1 1
Википедия 1912 11 1
Википедия 1924 1 1
Википедия 1925 11 1
Википедия 1929 11 1
Википедия 1943 11 1
Википедия 1946 11 1
Википедия 1947 11 1
Википедия 1949 11 1
Википедия 1951 11 1
Википедия 1953 22 2
Википедия 1955 11 1
Википедия 1958 1 1
Википедия 1961 22 2
Википедия 1964 22 2
Википедия 1965 11 1
Википедия 1966 15 2
Википедия 1969 33 3
Википедия 1970 129 4
Википедия 1971 44 4
Википедия 1972 22 2
Википедия 1973 1 1
Википедия 1974 2 1
Википедия 1975 33 3
Википедия 1976 11 1
Википедия 1977 13 3
Википедия 1978 11 1
Википедия 1979 112 12
Википедия 1980 13 4
Википедия 1982 11 1
Википедия 1983 3 2
Википедия 1984 48 3
Википедия 1985 37 3
Википедия 1986 6 4
Википедия 1987 13 2
Википедия 1988 14 3
Википедия 1990 12 2
Википедия 1991 8 5
Википедия 1992 1 1
Википедия 1993 1 1
Википедия 1994 23 3
Википедия 1995 4 1
Википедия 1996 23 3
Википедия 1997 6 1
Википедия 1998 32 10
Википедия 1999 39 11
Википедия 2000 43 12
Википедия 2001 59 14
Википедия 2002 105 19
Википедия 2003 149 53
Википедия 2004 803 285
Википедия 2005 2964 911
Википедия 2006 9818 2655
Википедия 2007 20017 5400
Википедия 2008 33722 6825

График, построенный программой просмотра Google Ngram Viewer с использованием приведенных выше данных, находится здесь:

Критика

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

Были предложены рекомендации по проведению исследований с данными из Google Ngram, которые решают многие из проблем, рассмотренных выше.

Проблемы с OCR

Оптическое распознавание символов, или OCR, не всегда надежно, и некоторые символы могут быть неправильно отсканированы. В частности, системные ошибки, такие как путаница «s» и «f» в текстах до XIX века (из-за использования длинные s который был похож по внешнему виду на «f») может вызвать системную ошибку. Хотя Google Ngram Viewer утверждает, что результаты являются надежными начиная с 1800 года, плохое распознавание текста и недостаточность данных означают, что частоты, указанные для таких языков, как китайский, могут быть точными только с 1970 года, при этом более ранние части корпуса не показывают результатов для общих терминов. , и данные за несколько лет, содержащие более 50% шума.

Класс NGramsCounter

Приведём класс NGramsCounter, который
подсчитывает условные и совместные вероятности максимальной глубины order.
Словами могут быть символы, строки или числа (индексы слов).

class NGramsCounter:        
    def __init__(self, order = 1):
        self.order = order           # глубина дерева (макс. длина n-grams)        
        self.root  = {}              # корень дерева (наш словарь)
        self.ngrams= *(order+1)   # число n-grams диной n=1,2,...,order

Метод add добавляет новые примеры из списка слов lst.
Если словами являются символы, то lst может быть строкой, иначе это обязательно спиcок.

    def add(self, lst):
        for n in range(self.order):              # сколько каких n-grams добавилось
            self.ngrams += max(len(lst) - n , 0)
            
        for i in range( len(lst) ):              # бежим по тексту           
            node = self.root
            for n, w in enumerate(lst):       
                if w in node: node += 1    # это слово уже было                  
                else:         node =   # новое слово
                node = node                # на следующий узел дерева

Метод prob получает на вход список слов lst
и возвращает условную вероятность
P(lst,…,lst => lst), при len==1: P(lst),
если cond = True или безусловную вероятность при cond = False
Если слова это символы, то lst может быть строкой, иначе это список.

                
    def prob(self, lst, cond=True):
        n_cur, n_prv, _ = self.counts(lst)
        if n_cur == 0:
            return 0                              # слово не нашли - вероятность 0
             
        return n_cur/(n_prv if cond else self.ngrams)        

Полный код класса (с дополнительными проверками и другими методами)
можно найти в my_ngrams.py.

Использование Play Market

Самым простым способом получить на смартфон очередной бестселлер является скачивание соответствующего приложения для чтения электронной литературы через Гугл Маркет.

На просторах магазина существует немало программ, способных удовлетворить самые взыскательные вкусы.

Обратите внимание

Есть платные и бесплатные приложения.

При скачивании следует обращать внимание на следующие особенности:

  • Количество установок. Этот показатель свидетельствует о популярности программы и является доказательством ее стабильной работы, что отмечено количеством закачек.
  • Поддерживаемые форматы. При выборе оптимальной программы, чтобы скачать книгу на телефон системы Андроид, следует определиться с понятием формат. Существует несколько разновидностей электронных романов.

Самым простым является обычный .txt. Его понимает любой редактор текста. Но в этом случае следует быть готовым, что книга будет представлять собой «полотно» текста без форматирования.

Следующим видом является привычный каждому .doc. Это файлы, созданные в Word. Их также можно открыть в простом редакторе текста.

Важно знать

Само произведение будет иметь минимальное форматирование: отступы, абзацы, деление на главы и заголовки.

Наиболее популярным форматом, который поддерживается исключительно программами для чтения электронных книг, является .fb2. Этот тип электронной литературы позволяет отображать иллюстрации, включает полное форматирование, оглавление, разбивку на страницы.

Бесплатность программы. Если пользователь не готов платить деньги за получение приложения, следует присмотреться к бесплатным, тем более, что платные версии не всегда являются лучшими.

Скачивание выбранного приложения через Play Market не отличается от инсталляции любой иной программы из магазина. После определения того приложения, которое будет устанавливаться, необходимо просто нажать кнопку «Скачать». Далее загрузка и инсталляция начнется в автоматическом режиме.

Эмуляция низкой пропускной способности сети

Дросселирование позволяет эмулировать медленные сетевые соединения, которые часто встречаются в мобильных сетях или общественных Wi-Fi. Вы можете использовать это, чтобы обеспечить быстрый отклик сайта или приложения в них.

Дросселирование доступно на вкладке «Throttling», а также в панели устройств Chrome (если она включена). Кроме этого можно настроить собственную конфигурацию пропускной способности сети, выбрав пункт «Settings» в нижней части раскрывающегося списка.

Нажмите «Add custom profile», а затем введите:

  • название профиля;скорость загрузки в килобитах в секунду;
  • скорость выгрузки в килобитах в секунду;
  • задержка в миллисекундах (стандартная задержка при выполнении сетевого запроса).

Корпуса

В корпус используемые для поиска, состоят из файлов total_counts, 1-граммов, 2-граммов, 3-граммов, 4 граммов и 5 граммов для каждого языка. Формат файла каждого из файлов: данные, разделенные табуляцией. Каждая строка имеет следующий формат:

  • total_counts файл
    год TAB match_count TAB page_count TAB volume_count NEWLINE
  • Файл ngram версии 1 (создан в июле 2009 г.)
    ngram TAB год TAB match_count TAB page_count TAB volume_count NEWLINE
  • Файл ngram версии 2 (создан в июле 2012 г.)
    ngram TAB год TAB match_count TAB volume_count NEWLINE

Средство просмотра Google Ngram использует match_count для построения графика.

Например, слово «Википедия» из файла версии 2 с английскими 1-граммами хранится следующим образом:

ngram год match_count volume_count
Википедия 1904 1 1
Википедия 1912 11 1
Википедия 1924 1 1
Википедия 1925 11 1
Википедия 1929 11 1
Википедия 1943 11 1
Википедия 1946 11 1
Википедия 1947 11 1
Википедия 1949 11 1
Википедия 1951 11 1
Википедия 1953 22 2
Википедия 1955 11 1
Википедия 1958 1 1
Википедия 1961 22 2
Википедия 1964 22 2
Википедия 1965 11 1
Википедия 1966 15 2
Википедия 1969 33 3
Википедия 1970 129 4
Википедия 1971 44 4
Википедия 1972 22 2
Википедия 1973 1 1
Википедия 1974 2 1
Википедия 1975 33 3
Википедия 1976 11 1
Википедия 1977 13 3
Википедия 1978 11 1
Википедия 1979 112 12
Википедия 1980 13 4
Википедия 1982 11 1
Википедия 1983 3 2
Википедия 1984 48 3
Википедия 1985 37 3
Википедия 1986 6 4
Википедия 1987 13 2
Википедия 1988 14 3
Википедия 1990 12 2
Википедия 1991 8 5
Википедия 1992 1 1
Википедия 1993 1 1
Википедия 1994 23 3
Википедия 1995 4 1
Википедия 1996 23 3
Википедия 1997 6 1
Википедия 1998 32 10
Википедия 1999 39 11
Википедия 2000 43 12
Википедия 2001 59 14
Википедия 2002 105 19
Википедия 2003 149 53
Википедия 2004 803 285
Википедия 2005 2964 911
Википедия 2006 9818 2655
Википедия 2007 20017 5400
Википедия 2008 33722 6825

График, построенный программой просмотра Google Ngram Viewer с использованием приведенных выше данных, находится здесь:

Добавить заголовки в структуру документа

Если структура документа пуста, когда вы его открываете, это потому, что в вашем документе нет текста, отформатированного как заголовки или заголовки.

После того, как вы примените заголовок, подзаголовок или любой уровень заголовка к тексту в документе, Структура документа обновится автоматически. Он будет отображаться в виде структуры, к которому вы привыкли, с отступом каждого нижнего уровня.

Чтобы применить заголовок или заголовок, выделите текст и затем либо щелкните Формат> Стили абзацев в меню, либо используйте раскрывающийся список «Стили» на панели инструментов.

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

Если вы планируете использовать различные уровни заголовков, рассмотрите возможность копирования форматирования для более быстрого создания документа.

По мере того, как вы продвигаетесь к документу и применяете заголовки, структура документа будет автоматически обновляться. А если вы переставляете, удаляете или вставляете заголовки, контур корректируется немедленно.

Критика [ править ]

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

Были предложены рекомендации по проведению исследований с данными из Google Ngram, которые решают многие из проблем, рассмотренных выше.

Проблемы с распознаванием текста править

Оптическое распознавание символов или OCR не всегда надежно, и некоторые символы могут быть неправильно отсканированы. В частности, системные ошибки, такие как путаница «s» и «f» в текстах до XIX века (из-за использования длинного s, которое по внешнему виду было похоже на «f»), могут вызвать системную предвзятость. Хотя Google Ngram Viewer утверждает, что результаты являются надежными с 1800 года и позже, плохое распознавание текста и недостаточные данные означают, что частоты, указанные для таких языков, как китайский, могут быть точными только с 1970 года, при этом более ранние части корпуса не показывают результатов для общих терминов. , и данные за несколько лет, содержащие более 50% шума.

Критика

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

Были предложены рекомендации по проведению исследований с данными из Google Ngram, которые решают многие из проблем, рассмотренных выше.

Проблемы с OCR

Оптическое распознавание символов, или OCR, не всегда надежно, и некоторые символы могут быть неправильно отсканированы. В частности, системные ошибки, такие как путаница «s» и «f» в текстах до XIX века (из-за использования длинные s который был похож по внешнему виду на «f») может вызвать системную ошибку. Хотя Google Ngram Viewer утверждает, что результаты являются надежными начиная с 1800 года, плохое распознавание текста и недостаточность данных означают, что частоты, указанные для таких языков, как китайский, могут быть точными только с 1970 года, при этом более ранние части корпуса не показывают результатов для общих терминов. , и данные за несколько лет, содержащие более 50% шума.

Критика

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

Были предложены рекомендации по проведению исследований с данными из Google Ngram, которые решают многие из проблем, рассмотренных выше.

Проблемы с OCR

Оптическое распознавание символов, или OCR, не всегда надежно, и некоторые символы могут быть неправильно отсканированы. В частности, системные ошибки, такие как путаница «s» и «f» в текстах до XIX века (из-за использования длинные s который был похож по внешнему виду на «f») может вызвать системную ошибку. Хотя Google Ngram Viewer утверждает, что результаты являются надежными начиная с 1800 года, плохое распознавание текста и недостаточность данных означают, что частоты, указанные для таких языков, как китайский, могут быть точными только с 1970 года, при этом более ранние части корпуса не показывают результатов для общих терминов. , и данные за несколько лет, содержащие более 50% шума.

Критика

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

Были предложены рекомендации по проведению исследований с данными из Google Ngram, которые решают многие из проблем, рассмотренных выше.

Проблемы с распознаванием текста

Оптическое распознавание символов или OCR не всегда надежно, и некоторые символы могут быть неправильно отсканированы. В частности, системные ошибки, такие как путаница «s» и «f» в текстах до XIX века (из-за использования длинного s, которое по внешнему виду было похоже на «f»), могут вызвать системную предвзятость. Хотя Google Ngram Viewer утверждает, что результаты являются надежными с 1800 года и позже, плохое распознавание текста и недостаточные данные означают, что частоты, указанные для таких языков, как китайский, могут быть точными только с 1970 года, при этом более ранние части корпуса не показывают результатов для общих терминов. , и данные за несколько лет, содержащие более 50% шума.

Другие приложения [ править ]

n -граммы находят применение в нескольких областях компьютерных наук, компьютерной лингвистики и прикладной математики.

Они привыкли:

  • разрабатывать ядра, которые позволяют алгоритмам машинного обучения , таким как поддержка векторных машин, учиться на строковых данных
  • найти вероятных кандидатов на правильное написание слова с ошибкой
  • улучшить сжатие в алгоритмах сжатия, где небольшая область данных требует n -грамм большей длины
  • оценить вероятность появления данной последовательности слов в тексте на интересующем языке в системах распознавания образов , распознавании речи , OCR ( оптическое распознавание символов ), интеллектуальном распознавании символов ( ICR ), машинном переводе и подобных приложениях
  • улучшить поиск в информационно-поисковых системах, когда есть надежда найти похожие «документы» (термин, для которого обычное значение иногда растягивается, в зависимости от набора данных) с учетом единственного документа запроса и базы данных справочных документов
  • повысить производительность поиска при анализе генетической последовательности, как в семействе программ BLAST
  • определить язык, на котором написан текст, или вид, из которого была взята небольшая последовательность ДНК
  • предсказывать буквы или слова наугад, чтобы создать текст, как в алгоритме диссоциированной прессы .
  • криптоанализ
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Зов электронных книг
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: