Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
31 views
Kernel: Python 3 (Ubuntu Linux)

АвтоматичСская ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° тСкстов

Π•ΠΊΠ°Ρ‚Π΅Ρ€ΠΈΠ½Π° ЧСрняк

Π΄ΠΠ”Π˜Π˜ ЀКН НИУ Π’Π¨Π­

[email protected]

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ история

  1. 7 января 1954. ДТордТтаунский экспСримСнт ΠΏΠΎ ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρƒ с русского Π½Π° английский;

  2. 1957 Π³., Ноам Π₯омский Π²Π²Π΅Π» "ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΡƒΡŽ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ";

  3. 1961 Π³., НачинаСтся сбор Брауновского корпуса;

  4. ΠΊΠΎΠ½Π΅Ρ† 1960-Ρ… Π³Π³., ELIZA –- ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, вСдущая психотСрапСвтичСскиС Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Ρ‹;

  5. 1975 Π³., Π‘ΠΎΠ»Ρ‚ΠΎΠ½ Π²Π²Π΅Π» Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΡƒΡŽ модСль (Vector Space Model, VSM);

  6. Π΄ΠΎ 1980–х. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡, основанныС Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ…;

  7. послС 1980–х Π³Π³., ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡, основанныС Π½Π° машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈ корпусной лингвистикС;

  8. 1998 Π³., ΠŸΠΎΠ½Ρ‚Π΅ ΠΈ ΠšΡ€ΠΎΡ„Ρ‚ вводят ΡΠ·Ρ‹ΠΊΠΎΠ²ΡƒΡŽ модСль (Language Model, LM);

  9. ΠΊΠΎΠ½Π΅Ρ† 1990–х Π³Π³., ВСроятностныС тСматичСскиС ΠΌΠΎΠ΄Π΅Π»ΠΈ (LSI, pLSI, LDA, ΠΈ Ρ‚.Π΄.);

  10. 1999 Π³., ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ Маннинга ΠΈ Π©ΡŽΡ‚Ρ†Π΅ "ΠžΡΠ½ΠΎΠ²Ρ‹ статистичСской автоматичСской ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкстов" ("Foundations of Statistical Natural Language Processing");

  11. 2009 Π³.. ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ Π‘Π΅Ρ€Π΄Π°, Кляйна ΠΈ Π›ΠΎΠΏΠ΅Ρ€Π° "АвтоматичСская ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° тСкстов Π½Π° Python" ("Natural Language Processing with Python);

  12. Mikolov, Tomas ΠΈ Π΄Ρ€. "Efficient estimation of word representations in vector space".

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ

  • ΠœΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄

  • ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ тСкстов

    • Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ спама

    • По Ρ‚ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

    • По Ρ‚Π΅ΠΌΠ΅ ΠΈΠ»ΠΈ ΠΆΠ°Π½Ρ€Ρƒ

  • ΠšΠ»Π°ΡΡ‚Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ тСкстов

  • Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ

    • Π€Π°ΠΊΡ‚ΠΎΠ² ΠΈ событий

    • Π˜ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… сущностСй

  • Вопросно-ΠΎΡ‚Π²Π΅Ρ‚Π½Ρ‹Π΅ систСмы

  • Буммаризация тСкстов

  • ГСнСрация тСкстов

  • РаспознаваниС Ρ€Π΅Ρ‡ΠΈ

  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° правописания

  • ΠžΠΏΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ распознаваниС символов

  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ экспСримСнты ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ° точности ΠΈ качСства ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ

  • Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ символов:

    • ВокСнизация: Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ тСкста Π½Π° слова

    • Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ тСкста Π½Π° прСдлоТСния

  • Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ слов – морфология:

    • Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° частСй Ρ€Π΅Ρ‡ΠΈ

    • БнятиС морфологичСской нСоднозначности

  • Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ – синтаксис:

    • Π’Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π³Π»Π°Π³ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ (chunking)

    • Π’Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΈΠ΅ сСмантичСских Ρ€ΠΎΠ»Π΅ΠΉ

    • Π”Π΅Ρ€Π΅Π²ΡŒΡ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΈ зависимостСй

  • Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ смысла – сСмантика ΠΈ дискурс:

    • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½Ρ‹Ρ… связСй

    • Анализ дискурсивных связСй

    • Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ синонимов

    • Анализ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… связСй

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

  • ΠΠ΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ

    • ЛСксичСская Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ: ΠΎΡ€Π³Π°Π½, ΠΏΠ°Ρ€ΠΈΡ‚ΡŒ, Ρ€ΠΎΠΆΠΊΠΈ, атлас

    • ΠœΠΎΡ€Ρ„ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ: Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π΅Π½Π΅Π³ Π² Π±Π°Π½ΠΊΠ΅. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°ΡŽΡ‚ Π±Π΅Π»ΠΊΠΈ Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ΅?

    • БинтаксичСская Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ: ΠœΡƒΠΆΡƒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ нСльзя. Π•Π³ΠΎ ΡƒΠ΄ΠΈΠ²ΠΈΠ» простой солдат.

  • НСологизмы: ΠΏΠ΅Ρ‡Π΅Π½ΡŒΠΊΠΈ, Π·Π°ΠΈΠ½ΡΡ‚Π°Π³Ρ€Π°ΠΌΠΌΠΈΡ‚ΡŒ, Ρ€Π΅ΠΏΠΎΡΡ‚Π½ΡƒΡ‚ΡŒ, Ρ€Π°ΡΡˆΠ°Ρ€ΠΈΡ‚ΡŒ, Π·Π°Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ, ΠΊΠΈΠ»ΠΎΡ€ΡƒΠ±Π»ΠΈ

  • Π Π°Π·Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ написания: Россия, Российская ЀСдСрация, Π Π€

  • НСстандартноС написаниС: ΠΊΠ°Π³ Π΄ΠΈΠ»Π°?

БинтаксичСская Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ

синтаксичСская Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ

  • I saw the man. The man was on the hill. I was using a telescope.

  • I saw the man. I was on the hill. I was using a telescope.

  • I saw the man. The man was on the hill. The hill had a telescope.

  • I saw the man. I was on the hill. The hill had a telescope.

  • I saw the man. The man was on the hill. I saw him using a telescope.

План

  1. ΠœΠΎΡ€Ρ„ΠΎΠ»ΠΎΠ³ΠΈΡ. Бинтаксис. Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов ΠΈ словосочСтаний.

  2. ВСкторная модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ поиск. ВСкторная модСль слова ΠΈ дистрибутивная сСмантика. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ сниТСния размСрности. ВСматичСскоС ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, word2vec, GloVe

  3. ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ классификация ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ. Π‘Π²Π΅Ρ€Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ Π½Π΅ΠΉΡ€ΠΎΠ½Π½Ρ‹Π΅ сСти, условныС случайныС поля.

  4. Языковая модСль. НСйронная языковая модСль. Π Π΅ΠΊΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹Π΅ Π½Π΅ΠΉΡ€ΠΎΠ½Π½Ρ‹Π΅ сСти. Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… сущностСй.

ВокСнизация ΠΈ подсчСт количСства слов

Бколько слов Π² этом ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ?

  • На Π΄Π²ΠΎΡ€Π΅ Ρ‚Ρ€Π°Π²Π°, Π½Π° Ρ‚Ρ€Π°Π²Π΅ Π΄Ρ€ΠΎΠ²Π°, Π½Π΅ Ρ€ΡƒΠ±ΠΈ Π΄Ρ€ΠΎΠ²Π° Π½Π° Ρ‚Ρ€Π°Π²Π΅ Π΄Π²ΠΎΡ€Π°.*

** 12 Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²** : На, Π΄Π²ΠΎΡ€Π΅, Ρ‚Ρ€Π°Π²Π°, Π½Π°, Ρ‚Ρ€Π°Π²Π΅, Π΄Ρ€ΠΎΠ²Π°, Π½Π΅, Ρ€ΡƒΠ±ΠΈ, Π΄Ρ€ΠΎΠ²Π°, Π½Π°, Ρ‚Ρ€Π°Π²Π΅, Π΄Π²ΠΎΡ€Π°

** 8 - 9 Ρ‚ΠΈΠΏΠΎΠ²** : Н/Π½Π°, Π΄Π²ΠΎΡ€Π΅, Ρ‚Ρ€Π°Π²Π°, Ρ‚Ρ€Π°Π²Π΅, Π΄Ρ€ΠΎΠ²Π°, Π½Π΅, Ρ€ΡƒΠ±ΠΈ, Π΄Π²ΠΎΡ€Π°.

** 6 лСксСм** : Π½Π°, Π½Π΅, Π΄Π²ΠΎΡ€, Ρ‚Ρ€Π°Π²Π°, Π΄Ρ€ΠΎΠ²Π°, Ρ€ΡƒΠ±ΠΈΡ‚ΡŒ

Π’ΠΎΠΊΠ΅Π½ ΠΈ Ρ‚ΠΈΠΏ

** Π’ΠΈΠΏ ** – ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ слово ΠΈΠ· тСкста

** Π’ΠΎΠΊΠ΅Π½ ** – Ρ‚ΠΈΠΏ ΠΈ Π΅Π³ΠΎ позиция Π² тСкстС

ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΡ

NN = число Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²

VV – ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ (всС Ρ‚ΠΈΠΏΡ‹)

∣V∣|V| = количСство Ρ‚ΠΈΠΏΠΎΠ² Π² словарС

** Как связаны NN ΠΈ ∣V∣|V|?**

Π—Π°ΠΊΠΎΠ½ Π¦ΠΈΠΏΡ„Π°

Π’ любом достаточно большом тСкстС Ρ€Π°Π½Π³ Ρ‚ΠΈΠΏΠ° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»Π΅Π½ Π΅Π³ΠΎ частотС: f=arf = \frac{a}{r}

ff – частота Ρ‚ΠΈΠΏΠ°, rr – Ρ€Π°Π½Π³ Ρ‚ΠΈΠΏΠ°, aa – ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, для славянских языков – ΠΎΠΊΠΎΠ»ΠΎ 0.07

Π—Π°ΠΊΠΎΠ½ Π₯ипса

Π‘ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄Π»ΠΈΠ½Ρ‹ тСкста (количСства Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²), количСство Ρ‚ΠΈΠΏΠΎΠ² увСличиваСтся Π² соотвСтствии с Π·Π°ΠΊΠΎΠ½ΠΎΠΌ: ∣V∣=Kβˆ—Nb|V| = K*N^b

NN – число Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ², ∣V∣|V| – количСство Ρ‚ΠΈΠΏΠΎΠ² Π² словарС, K,bK, b – ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ K∈[10,100],b∈[0.4,0.6]K \in [10,100], b \in [0.4, 0.6]

Анализ новостных сообщСний

Рассмотрим ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ новостных сообщСний Π·Π° ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ 2017 Π³ΠΎΠ΄Π°. ΠŸΡ€ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ новостноС сообщСниС извСстны:

  • Π΅Π³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ тСкст

  • Π΄Π°Ρ‚Π° Π΅Π³ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ

  • событиС, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ это новостноС сообщСниС написано

  • Π΅Π³ΠΎ Ρ€ΡƒΠ±Ρ€ΠΈΠΊΠ°

import pandas as pd df = pd.read_csv('../data/news.csv') df.head()

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

БрСдняя Π΄Π»ΠΈΠ½Π° тСкстов

len_data = df.text.apply(len) len_data.describe()
count 1930.000000 mean 3798.322798 std 7865.936695 min 31.000000 25% 1215.250000 50% 1918.000000 75% 4044.000000 max 185698.000000 Name: text, dtype: float64

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ тСкстов ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… событиях

from bokeh.charts import Bar, output_notebook, show, hplot import math output_notebook() counts = df.event.value_counts() bar = Bar(counts, width=1000, height = 600, legend = False) bar.xaxis.major_label_orientation = math.pi/2-0.3 show(bar)
--------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-2-4e6b87a33326> in <module>() ----> 1 from bokeh.charts import Bar, output_notebook, show, hplot 2 import math 3 output_notebook() 4 5 counts = df.event.value_counts() ImportError: No module named 'bokeh.charts'

Π”Π»ΠΈΠ½Ρ‹ тСкстов (Π² символах)

from bokeh.charts import Histogram hist = Histogram(len_data[len_data < 10000], width=500, height = 300, legend = False) show(hist)
WARNING: Some output was deleted.

ВокСнизация

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ рСгулярныС выраТСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ тСксты Π½Π° слова

import re regex = re.compile("[А-Яа-я]+") def words_only(text, regex=regex): return " ".join(regex.findall(text)) df.text = df.text.str.lower() df.text = df.text.apply(words_only) df.text.iloc[0]
'Π² ΠΏΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³Π΅ ΠΏΡ€ΠΎΡˆΠ΅Π» ΠΌΠΈΡ‚ΠΈΠ½Π³ ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ исаакиСвского собора Ρ€ΠΏΡ† Π² санкт ΠΏΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³Π΅ люди устроили Π°ΠΊΡ†ΠΈΡŽ протСста ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ исаакиСвского собора Π² Π±Π΅Π·Π²ΠΎΠ·ΠΌΠ΅Π·Π΄Π½ΠΎΠ΅ пользованиС Ρ€ΠΏΡ† ΠΆΠΈΡ‚Π΅Π»ΠΈ ΠΏΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³Π° ΡΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ Π½Π° исаакиСвской ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ исаакиСвского собора Π² Π±Π΅Π·Π²ΠΎΠ·ΠΌΠ΅Π·Π΄Π½ΠΎΠ΅ пользованиС Ρ€ΠΏΡ† ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ тасс акция ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ встрСчи с Π΄Π΅ΠΏΡƒΡ‚Π°Ρ‚Π°ΠΌΠΈ Π·Π°ΠΊΠΎΠ½ΠΎΠ΄Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ собрания Π³ΠΎΡ€ΠΎΠ΄Π° ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ согласования с властями участники Π°ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ°ΠΊΡƒΡŽ Π»ΠΈΠ±ΠΎ символику ΠΈ ΠΏΠ»Π°ΠΊΠ°Ρ‚Ρ‹ Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Π³Π°Ρ„ΠΎΠ½Ρ‹ ΠΈΠ»ΠΈ срСдства звукоусилСния ΠΏΠΎ словам Π΄Π΅ΠΏΡƒΡ‚Π°Ρ‚Π° алСксСя ΠΊΠΎΠ²Π°Π»Π΅Π²Π° Π½Π° ΠΈΡΠ°Π°ΠΊΠΈΠ΅Π²ΡΠΊΡƒΡŽ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΏΡ€ΠΈΡˆΠ»ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ тысяча Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΏΠ΅Ρ€Π΅Π΄ участниками протСста выступили Π΄Π΅ΠΏΡƒΡ‚Π°Ρ‚Ρ‹ мСстного ΠΏΠ°Ρ€Π»Π°ΠΌΠ΅Π½Ρ‚Π° борис вишнСвский ΠΈ максим Ρ€Π΅Π·Π½ΠΈΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ заявили ΠΎ Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ смольного вишнСвский сообщил Ρ‡Ρ‚ΠΎ акция Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ встрСчи Π΄Π΅ΠΏΡƒΡ‚Π°Ρ‚ΠΎΠ² с избиратСлями Π·Π°ΠΊΠΎΠ½ санкт ΠΏΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³Π° прСдоставляСт Π½Π°ΠΌ ΠΏΡ€Π°Π²ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ с избиратСлями Ρ‚Π°ΠΊΡƒΡŽ встрСчу ΠΌΡ‹ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ расскаТСм ΠΊΠ°ΠΊ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅ΠΌ ΠΈΡ… интСрСсы ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ собора сказал ΠΏΠ°Ρ€Π»Π°ΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ музСя исаакиСвский собор Π½ΠΈΠΊΠΎΠ»Π°ΠΉ Π±ΡƒΡ€ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π» Ρ‡Ρ‚ΠΎ собор Π² пятницу Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ Π² связи с Π°ΠΊΡ†ΠΈΠ΅ΠΉ протСста ΠΎΠ½ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΠ» Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ стычСк ΠΌΠ΅ΠΆΠ΄Ρƒ сторонниками ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ собора ΠΈ Π΅Π΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΈΠΊΠ°ΠΌΠΈ Ρ€Π°Π½Π΅Π΅ стало извСстно Ρ‡Ρ‚ΠΎ собор ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΡƒΡ‚ Π² Π±Π΅Π·Π²ΠΎΠ·ΠΌΠ΅Π·Π΄Π½ΠΎΠ΅ пользованиС Π½Π° Π»Π΅Ρ‚ русской православной Ρ†Π΅Ρ€ΠΊΠ²ΠΈ Π² Π»ΠΈΡ†Π΅ московского ΠΏΠ°Ρ‚Ρ€ΠΈΠ°Ρ€Ρ…Π°Ρ‚Π° ΠΏΡ€ΠΈ этом ΠΎΠ½ останСтся Π² собствСнности ΠΏΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³Π° Ρ‚Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π² ΠΏΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³Π΅ продолТаСтся сбор подписСй ΠΏΠΎΠ΄ ΠΏΠ΅Ρ‚ΠΈΡ†ΠΈΠ΅ΠΉ ΠΎΠ± ΠΎΡ‚ΠΌΠ΅Π½Π΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΡƒΠΆΠ΅ поставили подписи Π±ΠΎΠ»Π΅Π΅ тысяч Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ интСрСсныС ΡΡ‚Π°Ρ‚ΡŒΠΈ'

Π‘Π°ΠΌΡ‹Π΅ частыС слова

from nltk import FreqDist n_types = [] n_tokens = [] tokens = [] fd = FreqDist() for index, row in df.iterrows(): tokens = row['text'].split() fd.update(tokens) n_types.append(len(fd)) n_tokens.append(sum(fd.values())) for i in fd.most_common(10): print(i)
('Π²', 43571) ('ΠΈ', 25182) ('Π½Π°', 19120) ('Ρ‡Ρ‚ΠΎ', 13617) ('Π½Π΅', 11953) ('с', 10868) ('ΠΏΠΎ', 9080) ('ΠΎ', 5035) ('это', 4955) ('ΠΎΠ½', 4761)

Π—Π°ΠΊΠΎΠ½ Π¦ΠΈΠΏΡ„Π°

from bokeh.plotting import figure freqs = list(fd.values()) freqs = sorted(freqs, reverse = True) p = figure(plot_width=400, plot_height=200) p.line(freqs[:300], range(300)) show(p)

Π—Π°ΠΊΠΎΠ½ Π₯ипса

from bokeh.plotting import figure freqs = list(fd.values()) freqs = sorted(freqs, reverse = True) p = figure(plot_width=700, plot_height=200) p.line(n_types, n_tokens) show(p)
WARNING: Some output was deleted.

РСгулярныС выраТСния ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅

ΠšΠ»Π°ΡΡΡ‹ символов:

[A-Z] – символы Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ рСгистра (Π»Π°Ρ‚ΠΈΠ½ΠΈΡ†Π°)

[a-z] – символы Π½ΠΈΠΆΠ½Π΅Π³ΠΎ рСгистра (Π»Π°Ρ‚ΠΈΠ½ΠΈΡ†Π°)

[А-Π―] – символы Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ рСгистра (ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π°)

[Π°-я] – символы Π½ΠΈΠΆΠ½Π΅Π³ΠΎ рСгистра (ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π°)

[0-9] ΠΈΠ»ΠΈ \d – Ρ†ΠΈΡ„Ρ€Π°

[^0-9] ΠΈΠ»ΠΈ \D – любой символ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ†ΠΈΡ„Ρ€Ρ‹

. – любой символ

Π‘Π»ΡƒΠΆΠ΅Π±Π½Ρ‹Π΅ символы:

\t – табуляция

\s – любой ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹ΠΉ символ

\S – всС символы, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Ρ…

\n – пСрСнос строки

^ – Π½Π°Ρ‡Π°Π»ΠΎ строки

$ – ΠΊΠΎΠ½Π΅Ρ† строки

__ – экранированиС

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹:

? - ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ символ/Π³Ρ€ΡƒΠΏΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ

+ - ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ символ/Π³Ρ€ΡƒΠΏΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ 1 ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·

* - ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ символ/Π³Ρ€ΡƒΠΏΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ 0 ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·

{n,m} - ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ символ/Π³Ρ€ΡƒΠΏΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΎΡ‚ n Π΄ΠΎ m Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ

{n,} - ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ символ/Π³Ρ€ΡƒΠΏΠΏΠ° Π² скобках ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ n ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·

{,m} - ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ символ/Π³Ρ€ΡƒΠΏΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ Π΄ΠΎ m Ρ€Π°Π·

{n} - ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ символ/Π³Ρ€ΡƒΠΏΠΏΠ° повторяСтся n Ρ€Π°Π·

Π’Π½ΡƒΡ‚Ρ€ΠΈ Π³Ρ€ΡƒΠΏΠΏ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ., +, *, ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ слСша: \

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹:

re.match(pattern, string) - Π½Π°ΠΉΡ‚ΠΈ подстроку pattern Π² Π½Π°Ρ‡Π°Π»Π΅ строки string

import re m = re.match(r'Ρ€Ρ‹Π±Π°ΠΊ', 'Ρ€Ρ‹Π±Π°ΠΊ Ρ€Ρ‹Π±Π°ΠΊΠ° Π²ΠΈΠ΄ΠΈΡ‚ ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°') print(m) print(m.group(0)) print(m.start(), m.end()) l = re.match(r'Π²ΠΈΠ΄ΠΈΡ‚', 'Ρ€Ρ‹Π±Π°ΠΊ Ρ€Ρ‹Π±Π°ΠΊΠ° Π²ΠΈΠ΄ΠΈΡ‚ ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°') print(l)
<_sre.SRE_Match object; span=(0, 5), match='Ρ€Ρ‹Π±Π°ΠΊ'> Ρ€Ρ‹Π±Π°ΠΊ 0 5 None

re.search(pattern, string) - Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ match, Π½ΠΎ ΠΈΡ‰Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ строки (Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅!)

m = re.search(r'ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°', 'Ρ€Ρ‹Π±Π°ΠΊ Ρ€Ρ‹Π±Π°ΠΊΠ° Π²ΠΈΠ΄ΠΈΡ‚ ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°') print(m) print(m.group(0)) print(m.start(), m.end()) l = re.search(r'ΠΏΡ€ΠΎΡ€ΡƒΠ±ΡŒ', 'Ρ€Ρ‹Π±Π°ΠΊ Ρ€Ρ‹Π±Π°ΠΊΠ° Π²ΠΈΠ΄ΠΈΡ‚ ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°') print(l)
<_sre.SRE_Match object; span=(19, 27), match='ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°'> ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ° 19 27 None

re.findall(pattern, string) - Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ всС вхоТдСния pattern Π² string Π² Π²ΠΈΠ΄Π΅ списка

m = re.findall(r'Ρ€Ρ‹Π±Π°ΠΊ', 'Ρ€Ρ‹Π±Π°ΠΊ Ρ€Ρ‹Π±Π°ΠΊΠ° Π²ΠΈΠ΄ΠΈΡ‚ ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°') print(m) l = re.findall(r'ΠΏΡ€ΠΎΡ€ΡƒΠ±ΡŒ', 'Ρ€Ρ‹Π±Π°ΠΊ Ρ€Ρ‹Π±Π°ΠΊΠ° Π²ΠΈΠ΄ΠΈΡ‚ ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°') print(l)
['Ρ€Ρ‹Π±Π°ΠΊ', 'Ρ€Ρ‹Π±Π°ΠΊ'] []

re.split(pattern, string, [maxsplit=0]) - раздСляСт строку string ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ pattern; ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ maxsplit ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° максимальноС количСство Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠΉ (Ссли ΠΈΡ… сущСствуСт нСсколько).

m = re.split(r'Π²ΠΈΠ΄ΠΈΡ‚', 'Ρ€Ρ‹Π±Π°ΠΊ Ρ€Ρ‹Π±Π°ΠΊΠ° Π²ΠΈΠ΄ΠΈΡ‚ ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°') print(m) l = re.split(r'Ρ€Ρ‹Π±Π°ΠΊ', 'Ρ€Ρ‹Π±Π°ΠΊ Ρ€Ρ‹Π±Π°ΠΊΠ° Π²ΠΈΠ΄ΠΈΡ‚ ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°') print(l, len(l)) l1 = re.split(r'Ρ€Ρ‹Π±Π°ΠΊ', 'Ρ€Ρ‹Π±Π°ΠΊ Ρ€Ρ‹Π±Π°ΠΊΠ° Π²ΠΈΠ΄ΠΈΡ‚ ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°',maxsplit=1) print(l1, len(l1))
['Ρ€Ρ‹Π±Π°ΠΊ Ρ€Ρ‹Π±Π°ΠΊΠ° ', ' ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°'] ['', ' ', 'Π° Π²ΠΈΠ΄ΠΈΡ‚ ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°'] 3 ['', ' Ρ€Ρ‹Π±Π°ΠΊΠ° Π²ΠΈΠ΄ΠΈΡ‚ ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°'] 2

re.sub(pattern, string2, string1) - замСняСт всС вхоТдСния pattern Π² string1 Π½Π° srting2

m = re.sub(r'Ρ€Ρ‹Π±Π°ΠΊ', 'Π Ρ‹Π±Π°ΠΊ', 'Ρ€Ρ‹Π±Π°ΠΊ Ρ€Ρ‹Π±Π°ΠΊΠ° Π²ΠΈΠ΄ΠΈΡ‚ ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°') print(m)
Π Ρ‹Π±Π°ΠΊ Π Ρ‹Π±Π°ΠΊΠ° Π²ΠΈΠ΄ΠΈΡ‚ ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°

re.compile(pattern) - создаСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ поиска

prog = re.compile(r'Ρ€Ρ‹Π±Π°ΠΊ') m = prog.findall('Ρ€Ρ‹Π±Π°ΠΊ Ρ€Ρ‹Π±Π°ΠΊΠ° Π²ΠΈΠ΄ΠΈΡ‚ ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°') print(m)
['Ρ€Ρ‹Π±Π°ΠΊ', 'Ρ€Ρ‹Π±Π°ΠΊ']
prog = re.compile('[А-Π―]') # поиск всСх Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅Ρ… Π±ΡƒΠΊΠ² Π² строкС m = prog.findall('Π Ρ‹Π±Π°ΠΊ Ρ€Ρ‹Π±Π°ΠΊΠ° Π²ΠΈΠ΄ΠΈΡ‚ ΠΈΠ·Π΄Π°Π»Π΅ΠΊΠ°. ВсСгда!') print(m)
['Π ', 'Π’']
prog = re.compile('[авСкорсту]{1}[0-9]{3}[авСкорсту]{2}') # рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для поиска Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… # Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² (русскиС Π±ΡƒΠΊΠ²Ρ‹, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ с Π»Π°Ρ‚ΠΈΠ½ΠΈΡ†Π΅ΠΉ) s = 'Ρƒ456Π°ΠΎ, Ρ‹234Π΅Π³, 99Π°Π²Ρ‚ΠΎ443' print(s) res = prog.findall(s) print(*res)
Ρƒ456Π°ΠΎ, Ρ‹234Π΅Π³, 99Π°Π²Ρ‚ΠΎ443 Ρƒ456Π°ΠΎ
# ΠΏΡ€ΠΈΠΌΠ΅Ρ€ "ΠΆΠ°Π΄Π½Ρ‹Ρ…" ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²: ΠΈΡ‰Π΅ΠΌ ΠΊΠΎΡ‚ΠΎΠ² s = 'ΠΊΠΎΡ‚ ΠΊΠΎΡ‚ΠΈΠΊ ΠΊΠΎΠΌΠΏΠΎΡ‚' res1 = re.findall(r'ΠΊ.*Ρ‚', s) print(res1) res2 = re.findall(r'ΠΊ.*?Ρ‚', s) print(res2) res3 = re.findall(r'ΠΊ[\S]*?Ρ‚', s) print(res3) res4 = re.findall(r'ΠΊΠΎΡ‚.*\s', s) print(res4)
['ΠΊΠΎΡ‚ ΠΊΠΎΡ‚ΠΈΠΊ ΠΊΠΎΠΌΠΏΠΎΡ‚'] ['ΠΊΠΎΡ‚', 'ΠΊΠΎΡ‚', 'ΠΊ ΠΊΠΎΠΌΠΏΠΎΡ‚'] ['ΠΊΠΎΡ‚', 'ΠΊΠΎΡ‚', 'ΠΊΠΎΠΌΠΏΠΎΡ‚'] ['ΠΊΠΎΡ‚ ΠΊΠΎΡ‚ΠΈΠΊ ']

Π—Π°Π΄Π°Π½ΠΈΠ΅ 1

НайдитС Π² тСкстС всС Π½ΠΎΠΌΠ΅Ρ€Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ²; тСкст Π»Π΅ΠΆΠΈΡ‚ Π² Ρ„Π°ΠΉΠ»Π΅ 'task1.txt'. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ написания Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ².

import re with open ('../data/task1.txt') as f: phones = f.read() print(phones) #здСсь Π’Π°Ρˆ ΠΊΠΎΠ΄
ГарантируСтся, Ρ‡Ρ‚ΠΎ Π² Π½ΠΎΠΌΠ΅Ρ€Π΅ 8 Ρ†ΠΈΡ„Ρ€ ΠΈ ΠΎΠ½ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ, Π½ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ написания ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ: 89268659970 Анна 8(495)3451212 АлСксСй Иванин АвтомастСрская +7(234)456-78-90 8(956)234-23-23 сосСдка 125 ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Π° ΠžΡ„ΠΈΡ, 5 этаТ 85679962312 Π˜Π³ΠΎΡ€ΡŒ +7-845-344-23-65
#Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ prog1 = re.compile('[+0-9\-\(\)]{8,}') res = prog1.findall(phones) print(*res, sep='\n')
89268659970 8(495)3451212 +7(234)456-78-90 8(956)234-23-23 85679962312 +7-845-344-23-65

БСгмСнтация ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ

"?", "!" ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ с ".".

Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ классификатор для сСгмСнтации ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ: для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ "." ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ ΠΎΠ½Π° ΠΊΠΎΠ½Ρ†ΠΎΠΌ прСдлоТСния ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

from nltk.tokenize import sent_tokenize text = 'ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅! И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅?' sents = sent_tokenize(text) print(len(sents)) print(*sents, sep='\n')
3 ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅! И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅?

Π—Π°Π΄Π°Π½ΠΈΠ΅ 2

ΠŸΠΎΡΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ количСство Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² тСкстС ΠΈΠ· Ρ„Π°ΠΉΠ»Π° task2.txt. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ список Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² Π² массив tokens.

import nltk text = ' '.join([line.strip() for line in open('../data/task2.txt')]) prog = re.compile('[А-Яа-я\-]+') tokens = prog.findall(text.lower()) d1 = nltk.FreqDist(tokens) print(tokens) sents = sent_tokenize(text) print(sents)
['ΡΡƒΠ΄ΡŒΠ±Π°', 'Π±Ρ‹Π»', 'Ρ‚ΠΎΠ»ΡŒΠΊΠΎ', 'ΠΎΠ΄ΠΈΠ½', 'Π²Ρ‹Ρ…ΠΎΠ΄', 'ΠΈΠ±ΠΎ', 'наши', 'ΠΆΠΈΠ·Π½ΠΈ', 'сплСлись', 'Π²', 'слишком', 'Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΉ', 'ΡƒΠ·Π΅Π»', 'Π³Π½Π΅Π²Π°', 'ΠΈ', 'блаТСнства', 'Ρ‡Ρ‚ΠΎΠ±Ρ‹', 'Ρ€Π΅ΡˆΠΈΡ‚ΡŒ', 'всС', 'ΠΊΠ°ΠΊ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ', 'ΠΈΠ½Π°Ρ‡Π΅', 'довСримся', 'ΠΆΡ€Π΅Π±ΠΈΡŽ', 'ΠΎΡ€Π΅Π»', 'ΠΈ', 'ΠΌΡ‹', 'поТСнимся', 'Ρ€Π΅ΡˆΠΊΠ°', 'ΠΈ', 'ΠΌΡ‹', 'расстанСмся', 'навсСгда', 'ΠΌΠΎΠ½Π΅Ρ‚ΠΊΠ°', 'Π±Ρ‹Π»Π°', 'ΠΏΠΎΠ΄Π±Ρ€ΠΎΡˆΠ΅Π½Π°', 'ΠΎΠ½Π°', 'звякнула', 'Π·Π°Π²Π΅Ρ€Ρ‚Π΅Π»Π°ΡΡŒ', 'ΠΈ', 'ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡŒ', 'ΠΎΡ€Π΅Π»', 'ΠΌΡ‹', 'ΡƒΡΡ‚Π°Π²ΠΈΠ»ΠΈΡΡŒ', 'Π½Π°', 'Π½Π΅Π΅', 'с', 'Π½Π΅Π΄ΠΎΡƒΠΌΠ΅Π½ΠΈΠ΅ΠΌ', 'Π·Π°Ρ‚Π΅ΠΌ', 'Π²', 'ΠΎΠ΄ΠΈΠ½', 'голос', 'ΠΌΡ‹', 'сказали', 'ΠΌΠΎΠΆΠ΅Ρ‚', 'Π΅Ρ‰Π΅', 'Ρ€Π°Π·ΠΎΠΊ', 'Π΄ΠΆΠ΅ΠΉ', 'Ρ€ΠΈΠΏ'] ['Π‘ΡƒΠ΄ΡŒΠ±Π°.', 'Π‘Ρ‹Π» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Ρ…ΠΎΠ΄, ΠΈΠ±ΠΎ наши ΠΆΠΈΠ·Π½ΠΈ сплСлись Π² слишком Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΉ ΡƒΠ·Π΅Π» Π³Π½Π΅Π²Π° ΠΈ блаТСнства, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ всС ΠΊΠ°ΠΊ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ½Π°Ρ‡Π΅.', 'ДовСримся ΠΆΡ€Π΅Π±ΠΈΡŽ: ΠΎΡ€Π΅Π» β€” ΠΈ ΠΌΡ‹ поТСнимся, Ρ€Π΅ΡˆΠΊΠ° β€” ΠΈ ΠΌΡ‹ расстанСмся навсСгда.', 'ΠœΠΎΠ½Π΅Ρ‚ΠΊΠ° Π±Ρ‹Π»Π° ΠΏΠΎΠ΄Π±Ρ€ΠΎΡˆΠ΅Π½Π°.', 'Она звякнула, Π·Π°Π²Π΅Ρ€Ρ‚Π΅Π»Π°ΡΡŒ ΠΈ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡŒ.', 'ΠžΡ€Π΅Π».', 'ΠœΡ‹ ΡƒΡΡ‚Π°Π²ΠΈΠ»ΠΈΡΡŒ Π½Π° Π½Π΅Π΅ с Π½Π΅Π΄ΠΎΡƒΠΌΠ΅Π½ΠΈΠ΅ΠΌ.', 'Π—Π°Ρ‚Π΅ΠΌ, Π² ΠΎΠ΄ΠΈΠ½ голос, ΠΌΡ‹ сказали: Β«ΠœΠΎΠΆΠ΅Ρ‚, Π΅Ρ‰Π΅ Ρ€Π°Π·ΠΎΠΊ?Β».', 'Π”ΠΆΠ΅ΠΉ Π ΠΈΠΏ']

Частотный Π°Π½Π°Π»ΠΈΠ· тСкста

import nltk d1 = nltk.FreqDist(tokens) # частотный ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ для тСкста d1.most_common(10) # Ρ‚ΠΎΠΊΠ΅Π½ ΠΈ ΠΊΠΎΠ»-Π²ΠΎ Π΅Π³ΠΎ появлСний Π² тСкстС
[('ΠΈ', 4), ('ΠΌΡ‹', 4), ('ΠΎΠ΄ΠΈΠ½', 2), ('Π²', 2), ('ΠΎΡ€Π΅Π»', 2), ('ΡΡƒΠ΄ΡŒΠ±Π°', 1), ('Π±Ρ‹Π»', 1), ('Ρ‚ΠΎΠ»ΡŒΠΊΠΎ', 1), ('Π²Ρ‹Ρ…ΠΎΠ΄', 1), ('ΠΈΠ±ΠΎ', 1)]

Π—Π°Π΄Π°Π½ΠΈΠ΅ 3

  1. ΠŸΠΎΡΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅, сколько слов Π² тСкстС task2 встрСчаСтся большС ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π°.

  2. ΠŸΠΎΡΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ количСство слов, состоящих ΠΈΠ· 5 Π±ΡƒΠΊΠ² ΠΈ Π±ΠΎΠ»Π΅Π΅.

res = [i for i in d1.most_common() if i[1] > 1] print(*res, sep='\n') print(len(res))
('ΠΈ', 4) ('ΠΌΡ‹', 4) ('ΠΎΠ΄ΠΈΠ½', 2) ('Π²', 2) ('ΠΎΡ€Π΅Π»', 2) 5
res = [i for i in d1 if len(i) > 5] print(res) print(len(res))
['ΡΡƒΠ΄ΡŒΠ±Π°', 'Ρ‚ΠΎΠ»ΡŒΠΊΠΎ', 'сплСлись', 'слишком', 'Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΉ', 'блаТСнства', 'Ρ€Π΅ΡˆΠΈΡ‚ΡŒ', 'ΠΊΠ°ΠΊ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ', 'довСримся', 'ΠΆΡ€Π΅Π±ΠΈΡŽ', 'поТСнимся', 'расстанСмся', 'навсСгда', 'ΠΌΠΎΠ½Π΅Ρ‚ΠΊΠ°', 'ΠΏΠΎΠ΄Π±Ρ€ΠΎΡˆΠ΅Π½Π°', 'звякнула', 'Π·Π°Π²Π΅Ρ€Ρ‚Π΅Π»Π°ΡΡŒ', 'ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡŒ', 'ΡƒΡΡ‚Π°Π²ΠΈΠ»ΠΈΡΡŒ', 'Π½Π΅Π΄ΠΎΡƒΠΌΠ΅Π½ΠΈΠ΅ΠΌ', 'сказали'] 21

ΠœΠΎΡ€Ρ„ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·

Π—Π°Π΄Π°Ρ‡ΠΈ морфологичСского Π°Π½Π°Π»ΠΈΠ·Π°

  • Π Π°Π·Π±ΠΎΡ€ слова β€” ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ (Π»Π΅ΠΌΠΌΡ‹), основы (стСма) ΠΈ грамматичСских характСристик слова

  • Π‘ΠΈΠ½Ρ‚Π΅Π· слова β€” гСнСрация слова ΠΏΠΎ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ грамматичСским характСристикам

ΠœΠΎΡ€Ρ„ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ процСссор – инструмСнт морфологичСского Π°Π½Π°Π»ΠΈΠ·Π°

  • ΠœΠΎΡ€Ρ„ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ

  • ΠœΠΎΡ€Ρ„ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€

ЛСмматизация

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слова Π΅ΡΡ‚ΡŒ Π»Π΅ΠΌΠΌΠ° (Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ Ρ„ΠΎΡ€ΠΌΠ°):

  • кошкС, ΠΊΠΎΡˆΠΊΡƒ, кошкам, кошкой β€…β€ŠβŸΉβ€…β€Š\implies кошка

  • Π±Π΅ΠΆΠ°Π», Π±Π΅ΠΆΠΈΡ‚, Π±Π΅Π³Ρƒ β€…β€ŠβŸΉβ€…β€Š\implies Π±Π΅ΠΆΠ°Ρ‚ΡŒ

  • Π±Π΅Π»ΠΎΠΌΡƒ, Π±Π΅Π»Ρ‹ΠΌ, Π±Π΅Π»Ρ‹ΠΌΠΈ β€…β€ŠβŸΉβ€…β€Š\implies Π±Π΅Π»Ρ‹ΠΉ

sent = 'Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π° Π΅Π³ΠΎ Π»ΠΈΡ†Π΅ Π½Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π»ΠΎΡΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… чувств – Π½ΠΈ проблСска сочувствия Π½Π΅ Π±Ρ‹Π»ΠΎ Π½Π° Π½Π΅ΠΌ, Π° вСдь боль просто нСвыносима'
from pymorphy2 import MorphAnalyzer m = MorphAnalyzer() lemmas1 = [m.parse(word)[0].normal_form for word in sent.split()] print(' '.join(lemmas1))
Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π° ΠΎΠ½ Π»ΠΈΡ†ΠΎ Π½Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ чувство – Π½ΠΈ проблСск сочувствиС Π½Π΅ Π±Ρ‹Ρ‚ΡŒ Π½Π° Π½Π΅ΠΌ, Π° вСдь боль просто нСвыносимый
from pymystem3 import Mystem m = Mystem() lemmas2 = m.lemmatize(sent) print(''.join(lemmas2))
Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π° Π΅Π³ΠΎ Π»ΠΈΡ†ΠΎ Π½Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ чувство – Π½ΠΈ проблСск сочувствиС Π½Π΅ Π±Ρ‹Ρ‚ΡŒ Π½Π° Π½Π΅ΠΌΠΎΠΉ, Π° вСдь боль просто нСвыносимый

Π‘Ρ‚Π΅ΠΌΠΌΠΈΠ½Π³

Π‘Π»ΠΎΠ²Π° состоят ΠΈΠ· ΠΌΠΎΡ€Ρ„Π΅ΠΌ: word=stem+affixesword = stem + affixes. Π‘Ρ‚Π΅ΠΌΠΌΠΈΠ½Π³ позволяСт ΠΎΡ‚Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ аффиксы. Π§Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠŸΠΎΡ€Ρ‚Π΅Ρ€Π°.

  • 1-Ρ‹ΠΉ Π²ΠΈΠ΄ ошибки: Π±Π΅Π»Ρ‹ΠΉ, Π±Π΅Π»ΠΊΠ°, бСльС β€…β€ŠβŸΉβ€…β€Š\implies Π±Π΅Π»

  • 2-ΠΎΠΉ Π²ΠΈΠ΄ ошибки: Ρ‚Ρ€ΡƒΠ΄Π½ΠΎΡΡ‚ΡŒ, Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹ΠΉ β€…β€ŠβŸΉβ€…β€Š\implies трудност, Ρ‚Ρ€ΡƒΠ΄

  • 3-ΠΈΠΉ Π²ΠΈΠ΄ ошибки: быстрый, быстрСС β€…β€ŠβŸΉβ€…β€Š\implies быст, побыстрСС β€…β€ŠβŸΉβ€…β€Š\implies побыст

Алгоритм ΠŸΠΎΡ€Ρ‚Π΅Ρ€Π° состоит ΠΈΠ· 5 Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄, Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ – опСрация удалСния / Π·Π°ΠΌΠ΅Π½Ρ‹ суффикса. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ вСроятностныС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

from nltk.stem.snowball import RussianStemmer stemmer = RussianStemmer() words = ['распрСдСлСниС', 'ΠΏΡ€ΠΈΡΡ‚Π°Π²ΠΈΡ‚ΡŒ', 'сдСлала', 'словообразованиС'] for w in words: stem = stemmer.stem(w) print(stem)
распрСдСлСн пристав сдСла словообразован

Π Π°Π·Π±ΠΎΡ€ слова

word = 'стСкло'
m = MorphAnalyzer() m.parse(word)
[Parse(word='стСкло', tag=OpencorporaTag('NOUN,inan,neut sing,nomn'), normal_form='стСкло', score=0.75, methods_stack=((<DictionaryAnalyzer>, 'стСкло', 545, 0),)), Parse(word='стСкло', tag=OpencorporaTag('NOUN,inan,neut sing,accs'), normal_form='стСкло', score=0.1875, methods_stack=((<DictionaryAnalyzer>, 'стСкло', 545, 3),)), Parse(word='стСкло', tag=OpencorporaTag('VERB,perf,intr neut,sing,past,indc'), normal_form='ΡΡ‚Π΅Ρ‡ΡŒ', score=0.0625, methods_stack=((<DictionaryAnalyzer>, 'стСкло', 968, 3),))]
m = Mystem() m.analyze(word)
[{'analysis': [{'gr': 'S,срСд,Π½Π΅ΠΎΠ΄=(Π²ΠΈΠ½,Π΅Π΄|ΠΈΠΌ,Π΅Π΄)', 'lex': 'стСкло'}], 'text': 'стСкло'}, {'text': '\n'}]

Π—Π°Π΄Π°Π½ΠΈΠ΅ 4

НайдитС Π² спискС пСрсонаТСй Ρ€ΠΎΠΌΠ°Π½Π° "Π’ΠΎΠΉΠ½Π° ΠΈ ΠΌΠΈΡ€" (task4.txt) всС ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ТСнскиС ΠΈΠΌΠ΅Π½Π°.

from pymorphy2 import MorphAnalyzer m = MorphAnalyzer() prog = re.compile('[А-Π―]{1}[Π°-я]+') #слова с Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹ tokens = prog.findall(raw) lemmas = [m.parse(word)[0].normal_form for word in tokens] names = set() for w in lemmas: p = m.parse(w)[0].tag if {'Name', 'femn'} in p: names.add(w.capitalize()) print(*names, sep='\n')

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° тСкстов

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ стоп-слов

from nltk.corpus import stopwords print(stopwords.words('russian'))
['ΠΈ', 'Π²', 'Π²ΠΎ', 'Π½Π΅', 'Ρ‡Ρ‚ΠΎ', 'ΠΎΠ½', 'Π½Π°', 'я', 'с', 'со', 'ΠΊΠ°ΠΊ', 'Π°', 'Ρ‚ΠΎ', 'всС', 'ΠΎΠ½Π°', 'Ρ‚Π°ΠΊ', 'Π΅Π³ΠΎ', 'Π½ΠΎ', 'Π΄Π°', 'Ρ‚Ρ‹', 'ΠΊ', 'Ρƒ', 'ΠΆΠ΅', 'Π²Ρ‹', 'Π·Π°', 'Π±Ρ‹', 'ΠΏΠΎ', 'Ρ‚ΠΎΠ»ΡŒΠΊΠΎ', 'Π΅Π΅', 'ΠΌΠ½Π΅', 'Π±Ρ‹Π»ΠΎ', 'Π²ΠΎΡ‚', 'ΠΎΡ‚', 'мСня', 'Π΅Ρ‰Π΅', 'Π½Π΅Ρ‚', 'ΠΎ', 'ΠΈΠ·', 'Π΅ΠΌΡƒ', 'Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ', 'ΠΊΠΎΠ³Π΄Π°', 'Π΄Π°ΠΆΠ΅', 'Π½Ρƒ', 'Π²Π΄Ρ€ΡƒΠ³', 'Π»ΠΈ', 'Ссли', 'ΡƒΠΆΠ΅', 'ΠΈΠ»ΠΈ', 'Π½ΠΈ', 'Π±Ρ‹Ρ‚ΡŒ', 'Π±Ρ‹Π»', 'Π½Π΅Π³ΠΎ', 'Π΄ΠΎ', 'вас', 'Π½ΠΈΠ±ΡƒΠ΄ΡŒ', 'ΠΎΠΏΡΡ‚ΡŒ', 'ΡƒΠΆ', 'Π²Π°ΠΌ', 'вСдь', 'Ρ‚Π°ΠΌ', 'ΠΏΠΎΡ‚ΠΎΠΌ', 'сСбя', 'Π½ΠΈΡ‡Π΅Π³ΠΎ', 'Π΅ΠΉ', 'ΠΌΠΎΠΆΠ΅Ρ‚', 'ΠΎΠ½ΠΈ', 'Ρ‚ΡƒΡ‚', 'Π³Π΄Π΅', 'Π΅ΡΡ‚ΡŒ', 'Π½Π°Π΄ΠΎ', 'Π½Π΅ΠΉ', 'для', 'ΠΌΡ‹', 'тСбя', 'ΠΈΡ…', 'Ρ‡Π΅ΠΌ', 'Π±Ρ‹Π»Π°', 'сам', 'Ρ‡Ρ‚ΠΎΠ±', 'Π±Π΅Π·', 'Π±ΡƒΠ΄Ρ‚ΠΎ', 'Ρ‡Π΅Π³ΠΎ', 'Ρ€Π°Π·', 'Ρ‚ΠΎΠΆΠ΅', 'сСбС', 'ΠΏΠΎΠ΄', 'Π±ΡƒΠ΄Π΅Ρ‚', 'ΠΆ', 'Ρ‚ΠΎΠ³Π΄Π°', 'ΠΊΡ‚ΠΎ', 'этот', 'Ρ‚ΠΎΠ³ΠΎ', 'ΠΏΠΎΡ‚ΠΎΠΌΡƒ', 'этого', 'ΠΊΠ°ΠΊΠΎΠΉ', 'совсСм', 'Π½ΠΈΠΌ', 'здСсь', 'этом', 'ΠΎΠ΄ΠΈΠ½', 'ΠΏΠΎΡ‡Ρ‚ΠΈ', 'ΠΌΠΎΠΉ', 'Ρ‚Π΅ΠΌ', 'Ρ‡Ρ‚ΠΎΠ±Ρ‹', 'Π½Π΅Π΅', 'сСйчас', 'Π±Ρ‹Π»ΠΈ', 'ΠΊΡƒΠ΄Π°', 'Π·Π°Ρ‡Π΅ΠΌ', 'всСх', 'Π½ΠΈΠΊΠΎΠ³Π΄Π°', 'ΠΌΠΎΠΆΠ½ΠΎ', 'ΠΏΡ€ΠΈ', 'Π½Π°ΠΊΠΎΠ½Π΅Ρ†', 'Π΄Π²Π°', 'ΠΎΠ±', 'Π΄Ρ€ΡƒΠ³ΠΎΠΉ', 'Ρ…ΠΎΡ‚ΡŒ', 'послС', 'Π½Π°Π΄', 'большС', 'Ρ‚ΠΎΡ‚', 'Ρ‡Π΅Ρ€Π΅Π·', 'эти', 'нас', 'ΠΏΡ€ΠΎ', 'всСго', 'Π½ΠΈΡ…', 'какая', 'ΠΌΠ½ΠΎΠ³ΠΎ', 'Ρ€Π°Π·Π²Π΅', 'Ρ‚Ρ€ΠΈ', 'эту', 'моя', 'Π²ΠΏΡ€ΠΎΡ‡Π΅ΠΌ', 'Ρ…ΠΎΡ€ΠΎΡˆΠΎ', 'свою', 'этой', 'ΠΏΠ΅Ρ€Π΅Π΄', 'ΠΈΠ½ΠΎΠ³Π΄Π°', 'Π»ΡƒΡ‡ΡˆΠ΅', 'Ρ‡ΡƒΡ‚ΡŒ', 'Ρ‚ΠΎΠΌ', 'нСльзя', 'Ρ‚Π°ΠΊΠΎΠΉ', 'ΠΈΠΌ', 'Π±ΠΎΠ»Π΅Π΅', 'всСгда', 'ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ', 'всю', 'ΠΌΠ΅ΠΆΠ΄Ρƒ']
mystopwords = stopwords.words('russian') + ['это', 'наш' , 'тыс', 'ΠΌΠ»Π½', 'ΠΌΠ»Ρ€Π΄', 'Ρ‚Π°ΠΊΠΆΠ΅', 'Ρ‚', 'Π΄'] def remove_stopwords(text, mystopwords = mystopwords): try: return " ".join([token for token in text.split() if not token in mystopwords]) except: return ""
m = Mystem() def lemmatize(text, mystem=m): try: return "".join(m.lemmatize(text)).strip() except: return " "
mystoplemmas = ['ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ','ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ','сСй', 'свой', 'наш', 'ΠΌΠΎΡ‡ΡŒ'] def remove_stoplemmas(text, mystoplemmas = mystoplemmas): try: return " ".join([token for token in text.split() if not token in mystoplemmas]) except: return ""
df.text = df.text.apply(remove_stopwords) df.text = df.text.apply(lemmatize) df.text = df.text.apply(remove_stoplemmas)
lemmata = [] for index, row in df.iterrows(): lemmata += row['text'].split() fd = FreqDist(lemmata) for i in fd.most_common(10): print(i)
('россия', 5643) ('Π³ΠΎΠ΄', 4750) ('москва', 4632) ('Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ', 4556) ('ΠΏΡƒΡ‚ΠΈΠ½', 4357) ('ΠΏΡ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚', 4109) ('Π²Ρ‹Π±ΠΎΡ€Ρ‹', 2849) ('вопрос', 2672) ('российский', 2312) ('врСмя', 2261)

БинтаксичСский Π°Π½Π°Π»ΠΈΠ·

Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° зависимостСй

Π― ΠΊΡƒΠΏΠΈΠ» ΠΊΠΎΡ„Π΅ Π² большом ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅

Π΄Π΅Ρ€Π΅Π²ΠΎ зависимостСй

  • ВсС слова Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ связаны ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠ° "хозяин-слуга", ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΡ‹

  • Π£Π·Π΅Π» Π΄Π΅Ρ€Π΅Π²Π° – слово Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ

  • Π”ΡƒΠ³Π° Π΄Π΅Ρ€Π΅Π²Π° – ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ подчинСния

Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ зависимости

SyntaxNet

SyntaxNet – Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° синтаксичСского парсСра. Доступны ΠΎΠ±ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ для Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 40 языков, Π² Ρ‚ΠΎΠΌ числС, для русского.

D. Chen and C. D. Manning. A Fast and Accurate Dependency Parser using Neural Networks. EMNLP. 2014.

!echo "На сСвСро-Π·Π°ΠΏΠ°Π΄Π΅ ΠœΠΎΡΠΊΠ²Ρ‹ Π΄Π²Π° подростка ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ»ΠΈΡΡŒ ΠΏΠΎΠ΄ Π»Π΅Π΄" | docker run --rm -i inemo/syntaxnet_rus
I syntaxnet/term_frequency_map.cc:103] Loaded 34 terms from ./syntaxnet/models/Russian-SynTagRus/label-map. I syntaxnet/embedding_feature_extractor.cc:35] Features: stack.child(1).label stack.child(1).sibling(-1).label stack.child(-1).label stack.child(-1).sibling(1).label stack.child(2).label stack.child(-2).label stack(1).child(1).label stack(1).child(1).sibling(-1).label stack(1).child(-1).label stack(1).child(-1).sibling(1).label stack(1).child(2).label stack(1).child(-2).label; input.token.morphology-set input(1).token.morphology-set input(2).token.morphology-set input(3).token.morphology-set stack.token.morphology-set stack.child(1).token.morphology-set stack.child(1).sibling(-1).token.morphology-set stack.child(-1).token.morphology-set stack.child(-1).sibling(1).token.morphology-set stack.child(2).token.morphology-set stack.child(-2).token.morphology-set stack(1).token.morphology-set stack(1).child(1).token.morphology-set stack(1).child(1).sibling(-1).token.morphology-set stack(1).child(-1).token.morphology-set stack(1).child(-1).sibling(1).token.morphology-set stack(1).child(2).token.morphology-set stack(1).child(-2).token.morphology-set stack(2).token.morphology-set stack(3).token.morphology-set; input.token.tag input(1).token.tag input(2).token.tag input(3).token.tag stack.token.tag stack.child(1).token.tag stack.child(1).sibling(-1).token.tag stack.child(-1).token.tag stack.child(-1).sibling(1).token.tag stack.child(2).token.tag stack.child(-2).token.tag stack(1).token.tag stack(1).child(1).token.tag stack(1).child(1).sibling(-1).token.tag stack(1).child(-1).token.tag stack(1).child(-1).sibling(1).token.tag stack(1).child(2).token.tag stack(1).child(-2).token.tag stack(2).token.tag stack(3).token.tag; input.token.word input(1).token.word input(2).token.word input(3).token.word stack.token.word stack.child(1).token.word stack.child(1).sibling(-1).token.word stack.child(-1).token.word stack.child(-1).sibling(1).token.word stack.child(2).token.word stack.child(-2).token.word stack(1).token.word stack(1).child(1).token.word stack(1).child(1).sibling(-1).token.word stack(1).child(-1).token.word stack(1).child(-1).sibling(1).token.word stack(1).child(2).token.word stack(1).child(-2).token.word stack(2).token.word stack(3).token.word I syntaxnet/embedding_feature_extractor.cc:36] Embedding names: labels;morphology;tags;words I syntaxnet/embedding_feature_extractor.cc:37] Embedding dims: 32;32;32;64 I syntaxnet/term_frequency_map.cc:103] Loaded 66 terms from ./syntaxnet/models/Russian-SynTagRus/morphology-map. I syntaxnet/term_frequency_map.cc:103] Loaded 31 terms from ./syntaxnet/models/Russian-SynTagRus/tag-map. I syntaxnet/term_frequency_map.cc:103] Loaded 103473 terms from ./syntaxnet/models/Russian-SynTagRus/word-map. INFO:tensorflow:Building training network with parameters: feature_sizes: [12 20 20 20] domain_sizes: [ 37 66 33 103475] I syntaxnet/term_frequency_map.cc:103] Loaded 34 terms from ./syntaxnet/models/Russian-SynTagRus/label-map. I syntaxnet/embedding_feature_extractor.cc:35] Features: input.capitalization input(1).capitalization input(2).capitalization input(3).capitalization input(-1).capitalization input(-2).capitalization input(-3).capitalization input(-4).capitalization; input.token.char-ngram input(1).token.char-ngram input(2).token.char-ngram input(3).token.char-ngram input(-1).token.char-ngram input(-2).token.char-ngram input(-3).token.char-ngram input(-4).token.char-ngram; input.digit input.hyphen input.token.punctuation-amount input.token.quote; input.token.prefix(length=2) input(1).token.prefix(length=2) input(2).token.prefix(length=2) input(3).token.prefix(length=2) input(-1).token.prefix(length=2) input(-2).token.prefix(length=2) input(-3).token.prefix(length=2) input(-4).token.prefix(length=2); input.token.prefix(length=3) input(1).token.prefix(length=3) input(2).token.prefix(length=3) input(3).token.prefix(length=3) input(-1).token.prefix(length=3) input(-2).token.prefix(length=3) input(-3).token.prefix(length=3) input(-4).token.prefix(length=3); input.token.suffix(length=2) input(1).token.suffix(length=2) input(2).token.suffix(length=2) input(3).token.suffix(length=2) input(-1).token.suffix(length=2) input(-2).token.suffix(length=2) input(-3).token.suffix(length=2) input(-4).token.suffix(length=2); input.token.suffix(length=3) input(1).token.suffix(length=3) input(2).token.suffix(length=3) input(3).token.suffix(length=3) input(-1).token.suffix(length=3) input(-2).token.suffix(length=3) input(-3).token.suffix(length=3) input(-4).token.suffix(length=3); input(-1).pred-tag input(-2).pred-tag input(-3).pred-tag input(-4).pred-tag; input.token.word input(1).token.word input(2).token.word input(3).token.word input(-1).token.word input(-2).token.word input(-3).token.word input(-4).token.word I syntaxnet/embedding_feature_extractor.cc:36] Embedding names: capitalization;char_ngram;other;prefix2;prefix3;suffix2;suffix3;tags;words I syntaxnet/embedding_feature_extractor.cc:37] Embedding dims: 2;16;8;16;16;16;16;16;64 I syntaxnet/term_frequency_map.cc:103] Loaded 18749 terms from ./syntaxnet/models/Russian-SynTagRus/char-ngram-map. I syntaxnet/term_frequency_map.cc:103] Loaded 31 terms from ./syntaxnet/models/Russian-SynTagRus/tag-map. I syntaxnet/term_frequency_map.cc:103] Loaded 34 terms from ./syntaxnet/models/Russian-SynTagRus/label-map. I syntaxnet/embedding_feature_extractor.cc:35] Features: input.capitalization input(1).capitalization input(2).capitalization input(3).capitalization input(-1).capitalization input(-2).capitalization input(-3).capitalization input(-4).capitalization; input.token.char-ngram input(1).token.char-ngram input(2).token.char-ngram input(3).token.char-ngram input(-1).token.char-ngram input(-2).token.char-ngram input(-3).token.char-ngram input(-4).token.char-ngram; input.digit input.hyphen input.token.punctuation-amount input.token.quote; input.token.prefix(length=2) input(1).token.prefix(length=2) input(2).token.prefix(length=2) input(3).token.prefix(length=2) input(-1).token.prefix(length=2) input(-2).token.prefix(length=2) input(-3).token.prefix(length=2) input(-4).token.prefix(length=2); input.token.prefix(length=3) input(1).token.prefix(length=3) input(2).token.prefix(length=3) input(3).token.prefix(length=3) input(-1).token.prefix(length=3) input(-2).token.prefix(length=3) input(-3).token.prefix(length=3) input(-4).token.prefix(length=3); input.token.suffix(length=2) input(1).token.suffix(length=2) input(2).token.suffix(length=2) input(3).token.suffix(length=2) input(-1).token.suffix(length=2) input(-2).token.suffix(length=2) input(-3).token.suffix(length=2) input(-4).token.suffix(length=2); input.token.suffix(length=3) input(1).token.suffix(length=3) input(2).token.suffix(length=3) input(3).token.suffix(length=3) input(-1).token.suffix(length=3) input(-2).token.suffix(length=3) input(-3).token.suffix(length=3) input(-4).token.suffix(length=3); input(-1).pred-morph-tag input(-2).pred-morph-tag input(-3).pred-morph-tag input(-4).pred-morph-tag; input.token.word input(1).token.word input(2).token.word input(3).token.word input(-1).token.word input(-2).token.word input(-3).token.word input(-4).token.word I syntaxnet/embedding_feature_extractor.cc:36] Embedding names: capitalization;char_ngram;other;prefix2;prefix3;suffix2;suffix3;tags;words I syntaxnet/embedding_feature_extractor.cc:37] Embedding dims: 2;16;8;16;16;16;16;16;64 I syntaxnet/term_frequency_map.cc:103] Loaded 18749 terms from ./syntaxnet/models/Russian-SynTagRus/char-ngram-map. I syntaxnet/term_frequency_map.cc:103] Loaded 103473 terms from ./syntaxnet/models/Russian-SynTagRus/word-map. INFO:tensorflow:Building training network with parameters: feature_sizes: [8 8 4 8 8 8 8 4 8] domain_sizes: [ 7 18750 5 8502 8502 7249 7249 34 103475] I syntaxnet/term_frequency_map.cc:103] Loaded 103473 terms from ./syntaxnet/models/Russian-SynTagRus/word-map. INFO:tensorflow:Building training network with parameters: feature_sizes: [8 8 4 8 8 8 8 4 8] domain_sizes: [ 7 18750 5 8502 8502 7249 7249 449 103475] I syntaxnet/term_frequency_map.cc:103] Loaded 34 terms from ./syntaxnet/models/Russian-SynTagRus/label-map. I syntaxnet/embedding_feature_extractor.cc:35] Features: stack.child(1).label stack.child(1).sibling(-1).label stack.child(-1).label stack.child(-1).sibling(1).label stack.child(2).label stack.child(-2).label stack(1).child(1).label stack(1).child(1).sibling(-1).label stack(1).child(-1).label stack(1).child(-1).sibling(1).label stack(1).child(2).label stack(1).child(-2).label; input.token.morphology-set input(1).token.morphology-set input(2).token.morphology-set input(3).token.morphology-set stack.token.morphology-set stack.child(1).token.morphology-set stack.child(1).sibling(-1).token.morphology-set stack.child(-1).token.morphology-set stack.child(-1).sibling(1).token.morphology-set stack.child(2).token.morphology-set stack.child(-2).token.morphology-set stack(1).token.morphology-set stack(1).child(1).token.morphology-set stack(1).child(1).sibling(-1).token.morphology-set stack(1).child(-1).token.morphology-set stack(1).child(-1).sibling(1).token.morphology-set stack(1).child(2).token.morphology-set stack(1).child(-2).token.morphology-set stack(2).token.morphology-set stack(3).token.morphology-set; input.token.tag input(1).token.tag input(2).token.tag input(3).token.tag stack.token.tag stack.child(1).token.tag stack.child(1).sibling(-1).token.tag stack.child(-1).token.tag stack.child(-1).sibling(1).token.tag stack.child(2).token.tag stack.child(-2).token.tag stack(1).token.tag stack(1).child(1).token.tag stack(1).child(1).sibling(-1).token.tag stack(1).child(-1).token.tag stack(1).child(-1).sibling(1).token.tag stack(1).child(2).token.tag stack(1).child(-2).token.tag stack(2).token.tag stack(3).token.tag; input.token.word input(1).token.word input(2).token.word input(3).token.word stack.token.word stack.child(1).token.word stack.child(1).sibling(-1).token.word stack.child(-1).token.word stack.child(-1).sibling(1).token.word stack.child(2).token.word stack.child(-2).token.word stack(1).token.word stack(1).child(1).token.word stack(1).child(1).sibling(-1).token.word stack(1).child(-1).token.word stack(1).child(-1).sibling(1).token.word stack(1).child(2).token.word stack(1).child(-2).token.word stack(2).token.word stack(3).token.word I syntaxnet/embedding_feature_extractor.cc:36] Embedding names: labels;morphology;tags;words I syntaxnet/embedding_feature_extractor.cc:37] Embedding dims: 32;32;32;64 I syntaxnet/term_frequency_map.cc:103] Loaded 66 terms from ./syntaxnet/models/Russian-SynTagRus/morphology-map. I syntaxnet/term_frequency_map.cc:103] Loaded 31 terms from ./syntaxnet/models/Russian-SynTagRus/tag-map. I syntaxnet/term_frequency_map.cc:103] Loaded 103473 terms from ./syntaxnet/models/Russian-SynTagRus/word-map. I syntaxnet/term_frequency_map.cc:103] Loaded 31 terms from ./syntaxnet/models/Russian-SynTagRus/tag-map. I syntaxnet/term_frequency_map.cc:103] Loaded 34 terms from ./syntaxnet/models/Russian-SynTagRus/label-map. I syntaxnet/embedding_feature_extractor.cc:35] Features: input.capitalization input(1).capitalization input(2).capitalization input(3).capitalization input(-1).capitalization input(-2).capitalization input(-3).capitalization input(-4).capitalization; input.token.char-ngram input(1).token.char-ngram input(2).token.char-ngram input(3).token.char-ngram input(-1).token.char-ngram input(-2).token.char-ngram input(-3).token.char-ngram input(-4).token.char-ngram; input.digit input.hyphen input.token.punctuation-amount input.token.quote; input.token.prefix(length=2) input(1).token.prefix(length=2) input(2).token.prefix(length=2) input(3).token.prefix(length=2) input(-1).token.prefix(length=2) input(-2).token.prefix(length=2) input(-3).token.prefix(length=2) input(-4).token.prefix(length=2); input.token.prefix(length=3) input(1).token.prefix(length=3) input(2).token.prefix(length=3) input(3).token.prefix(length=3) input(-1).token.prefix(length=3) input(-2).token.prefix(length=3) input(-3).token.prefix(length=3) input(-4).token.prefix(length=3); input.token.suffix(length=2) input(1).token.suffix(length=2) input(2).token.suffix(length=2) input(3).token.suffix(length=2) input(-1).token.suffix(length=2) input(-2).token.suffix(length=2) input(-3).token.suffix(length=2) input(-4).token.suffix(length=2); input.token.suffix(length=3) input(1).token.suffix(length=3) input(2).token.suffix(length=3) input(3).token.suffix(length=3) input(-1).token.suffix(length=3) input(-2).token.suffix(length=3) input(-3).token.suffix(length=3) input(-4).token.suffix(length=3); input(-1).pred-tag input(-2).pred-tag input(-3).pred-tag input(-4).pred-tag; input.token.word input(1).token.word input(2).token.word input(3).token.word input(-1).token.word input(-2).token.word input(-3).token.word input(-4).token.word I syntaxnet/embedding_feature_extractor.cc:36] Embedding names: capitalization;char_ngram;other;prefix2;prefix3;suffix2;suffix3;tags;words I syntaxnet/embedding_feature_extractor.cc:37] Embedding dims: 2;16;8;16;16;16;16;16;64 I syntaxnet/term_frequency_map.cc:103] Loaded 18749 terms from ./syntaxnet/models/Russian-SynTagRus/char-ngram-map. I syntaxnet/term_frequency_map.cc:103] Loaded 103473 terms from ./syntaxnet/models/Russian-SynTagRus/word-map. I syntaxnet/term_frequency_map.cc:103] Loaded 34 terms from ./syntaxnet/models/Russian-SynTagRus/label-map. I syntaxnet/embedding_feature_extractor.cc:35] Features: input.capitalization input(1).capitalization input(2).capitalization input(3).capitalization input(-1).capitalization input(-2).capitalization input(-3).capitalization input(-4).capitalization; input.token.char-ngram input(1).token.char-ngram input(2).token.char-ngram input(3).token.char-ngram input(-1).token.char-ngram input(-2).token.char-ngram input(-3).token.char-ngram input(-4).token.char-ngram; input.digit input.hyphen input.token.punctuation-amount input.token.quote; input.token.prefix(length=2) input(1).token.prefix(length=2) input(2).token.prefix(length=2) input(3).token.prefix(length=2) input(-1).token.prefix(length=2) input(-2).token.prefix(length=2) input(-3).token.prefix(length=2) input(-4).token.prefix(length=2); input.token.prefix(length=3) input(1).token.prefix(length=3) input(2).token.prefix(length=3) input(3).token.prefix(length=3) input(-1).token.prefix(length=3) input(-2).token.prefix(length=3) input(-3).token.prefix(length=3) input(-4).token.prefix(length=3); input.token.suffix(length=2) input(1).token.suffix(length=2) input(2).token.suffix(length=2) input(3).token.suffix(length=2) input(-1).token.suffix(length=2) input(-2).token.suffix(length=2) input(-3).token.suffix(length=2) input(-4).token.suffix(length=2); input.token.suffix(length=3) input(1).token.suffix(length=3) input(2).token.suffix(length=3) input(3).token.suffix(length=3) input(-1).token.suffix(length=3) input(-2).token.suffix(length=3) input(-3).token.suffix(length=3) input(-4).token.suffix(length=3); input(-1).pred-morph-tag input(-2).pred-morph-tag input(-3).pred-morph-tag input(-4).pred-morph-tag; input.token.word input(1).token.word input(2).token.word input(3).token.word input(-1).token.word input(-2).token.word input(-3).token.word input(-4).token.word I syntaxnet/embedding_feature_extractor.cc:36] Embedding names: capitalization;char_ngram;other;prefix2;prefix3;suffix2;suffix3;tags;words I syntaxnet/embedding_feature_extractor.cc:37] Embedding dims: 2;16;8;16;16;16;16;16;64 I syntaxnet/term_frequency_map.cc:103] Loaded 18749 terms from ./syntaxnet/models/Russian-SynTagRus/char-ngram-map. I syntaxnet/term_frequency_map.cc:103] Loaded 103473 terms from ./syntaxnet/models/Russian-SynTagRus/word-map. INFO:tensorflow:Processed 1 documents INFO:tensorflow:Total processed documents: 1 INFO:tensorflow:num correct tokens: 0 INFO:tensorflow:total tokens: 8 INFO:tensorflow:Seconds elapsed in evaluation: 0.16, eval metric: 0.00% INFO:tensorflow:Processed 1 documents INFO:tensorflow:Total processed documents: 1 INFO:tensorflow:num correct tokens: 0 INFO:tensorflow:total tokens: 8 INFO:tensorflow:Seconds elapsed in evaluation: 0.81, eval metric: 0.00% INFO:tensorflow:Processed 1 documents INFO:tensorflow:Total processed documents: 1 INFO:tensorflow:num correct tokens: 1 INFO:tensorflow:total tokens: 8 INFO:tensorflow:Seconds elapsed in evaluation: 1.89, eval metric: 12.50% 1 На _ ADP _ fPOS=ADP++ 2 case _ _ 2 сСвСро-Π·Π°ΠΏΠ°Π΄Π΅ _ NOUN _ Animacy=Inan|Case=Loc|Gender=Masc|Number=Sing|fPOS=NOUN++ 6 nmod _ _ 3 ΠœΠΎΡΠΊΠ²Ρ‹ _ NOUN _ Animacy=Inan|Case=Gen|Gender=Fem|Number=Sing|fPOS=NOUN++ 2 dobj _ _ 4 Π΄Π²Π° _ NUM _ Case=Nom|Gender=Masc|fPOS=NUM++ 5 nummod _ _ 5 подростка _ NOUN _ Animacy=Anim|Case=Gen|Gender=Masc|Number=Sing|fPOS=NOUN++ 6 nsubj _ _ 6 ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ»ΠΈΡΡŒ _ VERB _ Aspect=Perf|Mood=Ind|Number=Plur|Tense=Past|VerbForm=Fin|Voice=Act|fPOS=VERB++ 0 ROOT _ _ 7 ΠΏΠΎΠ΄ _ ADP _ fPOS=ADP++ 8 case _ _ 8 Π»Π΅Π΄ _ NOUN _ Animacy=Inan|Case=Acc|Gender=Masc|Number=Sing|fPOS=NOUN++ 6 dobj _ _
! cat ../data/sentences.txt | docker run --rm -i inemo/syntaxnet_rus > ../data/sentences.conll
I syntaxnet/term_frequency_map.cc:103] Loaded 34 terms from ./syntaxnet/models/Russian-SynTagRus/label-map. I syntaxnet/embedding_feature_extractor.cc:35] Features: stack.child(1).label stack.child(1).sibling(-1).label stack.child(-1).label stack.child(-1).sibling(1).label stack.child(2).label stack.child(-2).label stack(1).child(1).label stack(1).child(1).sibling(-1).label stack(1).child(-1).label stack(1).child(-1).sibling(1).label stack(1).child(2).label stack(1).child(-2).label; input.token.morphology-set input(1).token.morphology-set input(2).token.morphology-set input(3).token.morphology-set stack.token.morphology-set stack.child(1).token.morphology-set stack.child(1).sibling(-1).token.morphology-set stack.child(-1).token.morphology-set stack.child(-1).sibling(1).token.morphology-set stack.child(2).token.morphology-set stack.child(-2).token.morphology-set stack(1).token.morphology-set stack(1).child(1).token.morphology-set stack(1).child(1).sibling(-1).token.morphology-set stack(1).child(-1).token.morphology-set stack(1).child(-1).sibling(1).token.morphology-set stack(1).child(2).token.morphology-set stack(1).child(-2).token.morphology-set stack(2).token.morphology-set stack(3).token.morphology-set; input.token.tag input(1).token.tag input(2).token.tag input(3).token.tag stack.token.tag stack.child(1).token.tag stack.child(1).sibling(-1).token.tag stack.child(-1).token.tag stack.child(-1).sibling(1).token.tag stack.child(2).token.tag stack.child(-2).token.tag stack(1).token.tag stack(1).child(1).token.tag stack(1).child(1).sibling(-1).token.tag stack(1).child(-1).token.tag stack(1).child(-1).sibling(1).token.tag stack(1).child(2).token.tag stack(1).child(-2).token.tag stack(2).token.tag stack(3).token.tag; input.token.word input(1).token.word input(2).token.word input(3).token.word stack.token.word stack.child(1).token.word stack.child(1).sibling(-1).token.word stack.child(-1).token.word stack.child(-1).sibling(1).token.word stack.child(2).token.word stack.child(-2).token.word stack(1).token.word stack(1).child(1).token.word stack(1).child(1).sibling(-1).token.word stack(1).child(-1).token.word stack(1).child(-1).sibling(1).token.word stack(1).child(2).token.word stack(1).child(-2).token.word stack(2).token.word stack(3).token.word I syntaxnet/embedding_feature_extractor.cc:36] Embedding names: labels;morphology;tags;words I syntaxnet/embedding_feature_extractor.cc:37] Embedding dims: 32;32;32;64 I syntaxnet/term_frequency_map.cc:103] Loaded 66 terms from ./syntaxnet/models/Russian-SynTagRus/morphology-map. I syntaxnet/term_frequency_map.cc:103] Loaded 31 terms from ./syntaxnet/models/Russian-SynTagRus/tag-map. I syntaxnet/term_frequency_map.cc:103] Loaded 34 terms from ./syntaxnet/models/Russian-SynTagRus/label-map. I syntaxnet/embedding_feature_extractor.cc:35] Features: input.capitalization input(1).capitalization input(2).capitalization input(3).capitalization input(-1).capitalization input(-2).capitalization input(-3).capitalization input(-4).capitalization; input.token.char-ngram input(1).token.char-ngram input(2).token.char-ngram input(3).token.char-ngram input(-1).token.char-ngram input(-2).token.char-ngram input(-3).token.char-ngram input(-4).token.char-ngram; input.digit input.hyphen input.token.punctuation-amount input.token.quote; input.token.prefix(length=2) input(1).token.prefix(length=2) input(2).token.prefix(length=2) input(3).token.prefix(length=2) input(-1).token.prefix(length=2) input(-2).token.prefix(length=2) input(-3).token.prefix(length=2) input(-4).token.prefix(length=2); input.token.prefix(length=3) input(1).token.prefix(length=3) input(2).token.prefix(length=3) input(3).token.prefix(length=3) input(-1).token.prefix(length=3) input(-2).token.prefix(length=3) input(-3).token.prefix(length=3) input(-4).token.prefix(length=3); input.token.suffix(length=2) input(1).token.suffix(length=2) input(2).token.suffix(length=2) input(3).token.suffix(length=2) input(-1).token.suffix(length=2) input(-2).token.suffix(length=2) input(-3).token.suffix(length=2) input(-4).token.suffix(length=2); input.token.suffix(length=3) input(1).token.suffix(length=3) input(2).token.suffix(length=3) input(3).token.suffix(length=3) input(-1).token.suffix(length=3) input(-2).token.suffix(length=3) input(-3).token.suffix(length=3) input(-4).token.suffix(length=3); input(-1).pred-tag input(-2).pred-tag input(-3).pred-tag input(-4).pred-tag; input.token.word input(1).token.word input(2).token.word input(3).token.word input(-1).token.word input(-2).token.word input(-3).token.word input(-4).token.word I syntaxnet/embedding_feature_extractor.cc:36] Embedding names: capitalization;char_ngram;other;prefix2;prefix3;suffix2;suffix3;tags;words I syntaxnet/embedding_feature_extractor.cc:37] Embedding dims: 2;16;8;16;16;16;16;16;64 I syntaxnet/term_frequency_map.cc:103] Loaded 18749 terms from ./syntaxnet/models/Russian-SynTagRus/char-ngram-map. I syntaxnet/term_frequency_map.cc:103] Loaded 31 terms from ./syntaxnet/models/Russian-SynTagRus/tag-map. I syntaxnet/term_frequency_map.cc:103] Loaded 103473 terms from ./syntaxnet/models/Russian-SynTagRus/word-map. I syntaxnet/term_frequency_map.cc:103] Loaded 34 terms from ./syntaxnet/models/Russian-SynTagRus/label-map. I syntaxnet/embedding_feature_extractor.cc:35] Features: input.capitalization input(1).capitalization input(2).capitalization input(3).capitalization input(-1).capitalization input(-2).capitalization input(-3).capitalization input(-4).capitalization; input.token.char-ngram input(1).token.char-ngram input(2).token.char-ngram input(3).token.char-ngram input(-1).token.char-ngram input(-2).token.char-ngram input(-3).token.char-ngram input(-4).token.char-ngram; input.digit input.hyphen input.token.punctuation-amount input.token.quote; input.token.prefix(length=2) input(1).token.prefix(length=2) input(2).token.prefix(length=2) input(3).token.prefix(length=2) input(-1).token.prefix(length=2) input(-2).token.prefix(length=2) input(-3).token.prefix(length=2) input(-4).token.prefix(length=2); input.token.prefix(length=3) input(1).token.prefix(length=3) input(2).token.prefix(length=3) input(3).token.prefix(length=3) input(-1).token.prefix(length=3) input(-2).token.prefix(length=3) input(-3).token.prefix(length=3) input(-4).token.prefix(length=3); input.token.suffix(length=2) input(1).token.suffix(length=2) input(2).token.suffix(length=2) input(3).token.suffix(length=2) input(-1).token.suffix(length=2) input(-2).token.suffix(length=2) input(-3).token.suffix(length=2) input(-4).token.suffix(length=2); input.token.suffix(length=3) input(1).token.suffix(length=3) input(2).token.suffix(length=3) input(3).token.suffix(length=3) input(-1).token.suffix(length=3) input(-2).token.suffix(length=3) input(-3).token.suffix(length=3) input(-4).token.suffix(length=3); input(-1).pred-morph-tag input(-2).pred-morph-tag input(-3).pred-morph-tag input(-4).pred-morph-tag; input.token.word input(1).token.word input(2).token.word input(3).token.word input(-1).token.word input(-2).token.word input(-3).token.word input(-4).token.word I syntaxnet/embedding_feature_extractor.cc:36] Embedding names: capitalization;char_ngram;other;prefix2;prefix3;suffix2;suffix3;tags;words I syntaxnet/embedding_feature_extractor.cc:37] Embedding dims: 2;16;8;16;16;16;16;16;64 INFO:tensorflow:Building training network with parameters: feature_sizes: [8 8 4 8 8 8 8 4 8] domain_sizes: [ 7 18750 5 8502 8502 7249 7249 34 103475] I syntaxnet/term_frequency_map.cc:103] Loaded 103473 terms from ./syntaxnet/models/Russian-SynTagRus/word-map. I syntaxnet/term_frequency_map.cc:103] Loaded 18749 terms from ./syntaxnet/models/Russian-SynTagRus/char-ngram-map. INFO:tensorflow:Building training network with parameters: feature_sizes: [12 20 20 20] domain_sizes: [ 37 66 33 103475] I syntaxnet/term_frequency_map.cc:103] Loaded 103473 terms from ./syntaxnet/models/Russian-SynTagRus/word-map. INFO:tensorflow:Building training network with parameters: feature_sizes: [8 8 4 8 8 8 8 4 8] domain_sizes: [ 7 18750 5 8502 8502 7249 7249 449 103475] I syntaxnet/term_frequency_map.cc:103] Loaded 34 terms from ./syntaxnet/models/Russian-SynTagRus/label-map. I syntaxnet/embedding_feature_extractor.cc:35] Features: stack.child(1).label stack.child(1).sibling(-1).label stack.child(-1).label stack.child(-1).sibling(1).label stack.child(2).label stack.child(-2).label stack(1).child(1).label stack(1).child(1).sibling(-1).label stack(1).child(-1).label stack(1).child(-1).sibling(1).label stack(1).child(2).label stack(1).child(-2).label; input.token.morphology-set input(1).token.morphology-set input(2).token.morphology-set input(3).token.morphology-set stack.token.morphology-set stack.child(1).token.morphology-set stack.child(1).sibling(-1).token.morphology-set stack.child(-1).token.morphology-set stack.child(-1).sibling(1).token.morphology-set stack.child(2).token.morphology-set stack.child(-2).token.morphology-set stack(1).token.morphology-set stack(1).child(1).token.morphology-set stack(1).child(1).sibling(-1).token.morphology-set stack(1).child(-1).token.morphology-set stack(1).child(-1).sibling(1).token.morphology-set stack(1).child(2).token.morphology-set stack(1).child(-2).token.morphology-set stack(2).token.morphology-set stack(3).token.morphology-set; input.token.tag input(1).token.tag input(2).token.tag input(3).token.tag stack.token.tag stack.child(1).token.tag stack.child(1).sibling(-1).token.tag stack.child(-1).token.tag stack.child(-1).sibling(1).token.tag stack.child(2).token.tag stack.child(-2).token.tag stack(1).token.tag stack(1).child(1).token.tag stack(1).child(1).sibling(-1).token.tag stack(1).child(-1).token.tag stack(1).child(-1).sibling(1).token.tag stack(1).child(2).token.tag stack(1).child(-2).token.tag stack(2).token.tag stack(3).token.tag; input.token.word input(1).token.word input(2).token.word input(3).token.word stack.token.word stack.child(1).token.word stack.child(1).sibling(-1).token.word stack.child(-1).token.word stack.child(-1).sibling(1).token.word stack.child(2).token.word stack.child(-2).token.word stack(1).token.word stack(1).child(1).token.word stack(1).child(1).sibling(-1).token.word stack(1).child(-1).token.word stack(1).child(-1).sibling(1).token.word stack(1).child(2).token.word stack(1).child(-2).token.word stack(2).token.word stack(3).token.word I syntaxnet/embedding_feature_extractor.cc:36] Embedding names: labels;morphology;tags;words I syntaxnet/embedding_feature_extractor.cc:37] Embedding dims: 32;32;32;64 I syntaxnet/term_frequency_map.cc:103] Loaded 66 terms from ./syntaxnet/models/Russian-SynTagRus/morphology-map. I syntaxnet/term_frequency_map.cc:103] Loaded 31 terms from ./syntaxnet/models/Russian-SynTagRus/tag-map. I syntaxnet/term_frequency_map.cc:103] Loaded 103473 terms from ./syntaxnet/models/Russian-SynTagRus/word-map. I syntaxnet/term_frequency_map.cc:103] Loaded 31 terms from ./syntaxnet/models/Russian-SynTagRus/tag-map. I syntaxnet/term_frequency_map.cc:103] Loaded 34 terms from ./syntaxnet/models/Russian-SynTagRus/label-map. I syntaxnet/embedding_feature_extractor.cc:35] Features: input.capitalization input(1).capitalization input(2).capitalization input(3).capitalization input(-1).capitalization input(-2).capitalization input(-3).capitalization input(-4).capitalization; input.token.char-ngram input(1).token.char-ngram input(2).token.char-ngram input(3).token.char-ngram input(-1).token.char-ngram input(-2).token.char-ngram input(-3).token.char-ngram input(-4).token.char-ngram; input.digit input.hyphen input.token.punctuation-amount input.token.quote; input.token.prefix(length=2) input(1).token.prefix(length=2) input(2).token.prefix(length=2) input(3).token.prefix(length=2) input(-1).token.prefix(length=2) input(-2).token.prefix(length=2) input(-3).token.prefix(length=2) input(-4).token.prefix(length=2); input.token.prefix(length=3) input(1).token.prefix(length=3) input(2).token.prefix(length=3) input(3).token.prefix(length=3) input(-1).token.prefix(length=3) input(-2).token.prefix(length=3) input(-3).token.prefix(length=3) input(-4).token.prefix(length=3); input.token.suffix(length=2) input(1).token.suffix(length=2) input(2).token.suffix(length=2) input(3).token.suffix(length=2) input(-1).token.suffix(length=2) input(-2).token.suffix(length=2) input(-3).token.suffix(length=2) input(-4).token.suffix(length=2); input.token.suffix(length=3) input(1).token.suffix(length=3) input(2).token.suffix(length=3) input(3).token.suffix(length=3) input(-1).token.suffix(length=3) input(-2).token.suffix(length=3) input(-3).token.suffix(length=3) input(-4).token.suffix(length=3); input(-1).pred-tag input(-2).pred-tag input(-3).pred-tag input(-4).pred-tag; input.token.word input(1).token.word input(2).token.word input(3).token.word input(-1).token.word input(-2).token.word input(-3).token.word input(-4).token.word I syntaxnet/embedding_feature_extractor.cc:36] Embedding names: capitalization;char_ngram;other;prefix2;prefix3;suffix2;suffix3;tags;words I syntaxnet/embedding_feature_extractor.cc:37] Embedding dims: 2;16;8;16;16;16;16;16;64 I syntaxnet/term_frequency_map.cc:103] Loaded 18749 terms from ./syntaxnet/models/Russian-SynTagRus/char-ngram-map. I syntaxnet/term_frequency_map.cc:103] Loaded 103473 terms from ./syntaxnet/models/Russian-SynTagRus/word-map. I syntaxnet/term_frequency_map.cc:103] Loaded 34 terms from ./syntaxnet/models/Russian-SynTagRus/label-map. I syntaxnet/embedding_feature_extractor.cc:35] Features: input.capitalization input(1).capitalization input(2).capitalization input(3).capitalization input(-1).capitalization input(-2).capitalization input(-3).capitalization input(-4).capitalization; input.token.char-ngram input(1).token.char-ngram input(2).token.char-ngram input(3).token.char-ngram input(-1).token.char-ngram input(-2).token.char-ngram input(-3).token.char-ngram input(-4).token.char-ngram; input.digit input.hyphen input.token.punctuation-amount input.token.quote; input.token.prefix(length=2) input(1).token.prefix(length=2) input(2).token.prefix(length=2) input(3).token.prefix(length=2) input(-1).token.prefix(length=2) input(-2).token.prefix(length=2) input(-3).token.prefix(length=2) input(-4).token.prefix(length=2); input.token.prefix(length=3) input(1).token.prefix(length=3) input(2).token.prefix(length=3) input(3).token.prefix(length=3) input(-1).token.prefix(length=3) input(-2).token.prefix(length=3) input(-3).token.prefix(length=3) input(-4).token.prefix(length=3); input.token.suffix(length=2) input(1).token.suffix(length=2) input(2).token.suffix(length=2) input(3).token.suffix(length=2) input(-1).token.suffix(length=2) input(-2).token.suffix(length=2) input(-3).token.suffix(length=2) input(-4).token.suffix(length=2); input.token.suffix(length=3) input(1).token.suffix(length=3) input(2).token.suffix(length=3) input(3).token.suffix(length=3) input(-1).token.suffix(length=3) input(-2).token.suffix(length=3) input(-3).token.suffix(length=3) input(-4).token.suffix(length=3); input(-1).pred-morph-tag input(-2).pred-morph-tag input(-3).pred-morph-tag input(-4).pred-morph-tag; input.token.word input(1).token.word input(2).token.word input(3).token.word input(-1).token.word input(-2).token.word input(-3).token.word input(-4).token.word I syntaxnet/embedding_feature_extractor.cc:36] Embedding names: capitalization;char_ngram;other;prefix2;prefix3;suffix2;suffix3;tags;words I syntaxnet/embedding_feature_extractor.cc:37] Embedding dims: 2;16;8;16;16;16;16;16;64 I syntaxnet/term_frequency_map.cc:103] Loaded 18749 terms from ./syntaxnet/models/Russian-SynTagRus/char-ngram-map. I syntaxnet/term_frequency_map.cc:103] Loaded 103473 terms from ./syntaxnet/models/Russian-SynTagRus/word-map. INFO:tensorflow:Processed 6 documents INFO:tensorflow:Total processed documents: 6 INFO:tensorflow:num correct tokens: 0 INFO:tensorflow:total tokens: 48 INFO:tensorflow:Seconds elapsed in evaluation: 0.24, eval metric: 0.00% INFO:tensorflow:Processed 6 documents INFO:tensorflow:Total processed documents: 6 INFO:tensorflow:num correct tokens: 0 INFO:tensorflow:total tokens: 48 INFO:tensorflow:Seconds elapsed in evaluation: 0.52, eval metric: 0.00% INFO:tensorflow:Processed 6 documents INFO:tensorflow:Total processed documents: 6 INFO:tensorflow:num correct tokens: 6 INFO:tensorflow:total tokens: 48 INFO:tensorflow:Seconds elapsed in evaluation: 1.30, eval metric: 12.50%
ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° conll Ρ„Π°ΠΉΠ»ΠΎΠ²:
from nltk import DependencyGraph import codecs processed_sentences = [] sentence = [] for line in codecs.open('data.conll', 'r', 'utf-8'): if len(line) == 1: processed_sentences.append(sentence) sentence = [] else: word = line.split("\t") sentence.append(word) deps = [] for sentence in processed_sentences: s = u"" for line in sentence: s += u"\t".join(line) + u'\n' deps.append(s)
БинтаксичСскиС Π΄Π΅Ρ€Π΅Π²ΡŒΡ:
for sent_dep in deps: graph = DependencyGraph(tree_str=sent_dep) tree = graph.tree() print(tree.pretty_print())
испСк ______________|__________ | | | ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ | | | _____|__________ | | | | ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚Π° | | | | | Google ΠΏΠ΅Ρ‡Π΅Π½ΡŒΠ΅ . с искусствСнного None стал __________|_______ | | Π·Π²Π΅Π·Π΄ΠΎΠΉ | | _______|_____ | | | | НΠ₯Π› | | | | | ΠžΠ²Π΅Ρ‡ΠΊΠΈΠ½ . ΠΏΠ΅Ρ€Π²ΠΎΠΉ дня Π² None Π·Π°Π΄Π΅Ρ€ΠΆΠ°Π»ΠΈ ______|_______________ | | ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌΠΎΠ³ΠΎ | | | | ΠšΡƒΠ±Π°Π½ΠΈ убийствС | | ________|___________ . На Π² Π΄Π²ΠΎΠΉΠ½ΠΎΠΌ None вынСс ____|_______________ | | | ΠΏΡ€ΠΈΠ³ΠΎΠ²ΠΎΡ€ | | | | | | РостовС Π±Π°Π½Π΄Π΅ | | | | суд . Π’ Β«Π°ΠΌΠ°Π·ΠΎΠ½ΠΎΠΊΒ» None закрасили __________________|____________ | | | ΠΆΠ΅Ρ€Ρ‚Π²Π°ΠΌ | | | | | | | Ρ‚Π΅Ρ€Π°ΠΊΡ‚Π° | | | | | | | ΠΌΠ΅Ρ‚Ρ€ΠΎ | | | _____|________ Π§ΠΈΠ½ΠΎΠ²Π½ΠΈΠΊΠΈ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΠ°Π» . Π² питСрском None ΠΏΡ€ΠΎΠ΄Π»ΠΈΠ» ______|____________ | | | ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ | | | | | | | Π“ΡƒΠ»Π°ΠΌΠΎΠΌ | | | | ΠšΠ»ΡƒΠ± «Наполи» . с None
Π’Ρ€ΠΎΠΉΠΊΠΈ слово-слово-связь:
for sent_dep in deps: graph = DependencyGraph(tree_str=sent_dep) print([triple for triple in (graph.triples())]) print()
[(('испСк', 'VERB'), 'dobj', ('Google', 'NOUN')), (('испСк', 'VERB'), 'nmod', ('ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ', 'NOUN')), (('ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ', 'NOUN'), 'case', ('с', 'ADP')), (('ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ', 'NOUN'), 'nmod', ('ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚Π°', 'NOUN')), (('ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚Π°', 'NOUN'), 'amod', ('искусствСнного', 'ADJ')), (('испСк', 'VERB'), 'nsubj', ('ΠΏΠ΅Ρ‡Π΅Π½ΡŒΠ΅', 'NOUN')), (('испСк', 'VERB'), 'punct', ('.', 'PUNCT'))] [(('стал', 'VERB'), 'nsubj', ('ΠžΠ²Π΅Ρ‡ΠΊΠΈΠ½', 'NOUN')), (('стал', 'VERB'), 'nmod', ('Π·Π²Π΅Π·Π΄ΠΎΠΉ', 'NOUN')), (('Π·Π²Π΅Π·Π΄ΠΎΠΉ', 'NOUN'), 'amod', ('ΠΏΠ΅Ρ€Π²ΠΎΠΉ', 'ADJ')), (('Π·Π²Π΅Π·Π΄ΠΎΠΉ', 'NOUN'), 'nmod', ('дня', 'NOUN')), (('Π·Π²Π΅Π·Π΄ΠΎΠΉ', 'NOUN'), 'nmod', ('НΠ₯Π›', 'NOUN')), (('НΠ₯Π›', 'NOUN'), 'case', ('Π²', 'ADP')), (('стал', 'VERB'), 'punct', ('.', 'PUNCT'))] [(('Π·Π°Π΄Π΅Ρ€ΠΆΠ°Π»ΠΈ', 'VERB'), 'nmod', ('ΠšΡƒΠ±Π°Π½ΠΈ', 'NOUN')), (('ΠšΡƒΠ±Π°Π½ΠΈ', 'NOUN'), 'case', ('На', 'ADP')), (('Π·Π°Π΄Π΅Ρ€ΠΆΠ°Π»ΠΈ', 'VERB'), 'dobj', ('ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌΠΎΠ³ΠΎ', 'NOUN')), (('ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌΠΎΠ³ΠΎ', 'NOUN'), 'nmod', ('убийствС', 'NOUN')), (('убийствС', 'NOUN'), 'case', ('Π²', 'ADP')), (('убийствС', 'NOUN'), 'amod', ('Π΄Π²ΠΎΠΉΠ½ΠΎΠΌ', 'ADJ')), (('Π·Π°Π΄Π΅Ρ€ΠΆΠ°Π»ΠΈ', 'VERB'), 'punct', ('.', 'PUNCT'))] [(('вынСс', 'VERB'), 'nmod', ('РостовС', 'NOUN')), (('РостовС', 'NOUN'), 'case', ('Π’', 'ADP')), (('вынСс', 'VERB'), 'nsubj', ('суд', 'NOUN')), (('вынСс', 'VERB'), 'dobj', ('ΠΏΡ€ΠΈΠ³ΠΎΠ²ΠΎΡ€', 'NOUN')), (('ΠΏΡ€ΠΈΠ³ΠΎΠ²ΠΎΡ€', 'NOUN'), 'nmod', ('Π±Π°Π½Π΄Π΅', 'NOUN')), (('Π±Π°Π½Π΄Π΅', 'NOUN'), 'nmod', ('Β«Π°ΠΌΠ°Π·ΠΎΠ½ΠΎΠΊΒ»', 'NOUN')), (('вынСс', 'VERB'), 'punct', ('.', 'PUNCT'))] [(('закрасили', 'VERB'), 'nsubj', ('Π§ΠΈΠ½ΠΎΠ²Π½ΠΈΠΊΠΈ', 'NOUN')), (('закрасили', 'VERB'), 'dobj', ('ΠΌΠ΅ΠΌΠΎΡ€ΠΈΠ°Π»', 'NOUN')), (('закрасили', 'VERB'), 'nmod', ('ΠΆΠ΅Ρ€Ρ‚Π²Π°ΠΌ', 'NOUN')), (('ΠΆΠ΅Ρ€Ρ‚Π²Π°ΠΌ', 'NOUN'), 'nmod', ('Ρ‚Π΅Ρ€Π°ΠΊΡ‚Π°', 'NOUN')), (('Ρ‚Π΅Ρ€Π°ΠΊΡ‚Π°', 'NOUN'), 'nmod', ('ΠΌΠ΅Ρ‚Ρ€ΠΎ', 'NOUN')), (('ΠΌΠ΅Ρ‚Ρ€ΠΎ', 'NOUN'), 'case', ('Π²', 'ADP')), (('ΠΌΠ΅Ρ‚Ρ€ΠΎ', 'NOUN'), 'amod', ('питСрском', 'ADJ')), (('закрасили', 'VERB'), 'punct', ('.', 'PUNCT'))] [(('ΠΏΡ€ΠΎΠ΄Π»ΠΈΠ»', 'VERB'), 'nsubj', ('ΠšΠ»ΡƒΠ±', 'NOUN')), (('ΠΏΡ€ΠΎΠ΄Π»ΠΈΠ»', 'VERB'), 'advmod', ('«Наполи»', 'ADV')), (('ΠΏΡ€ΠΎΠ΄Π»ΠΈΠ»', 'VERB'), 'dobj', ('ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚', 'NOUN')), (('ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚', 'NOUN'), 'nmod', ('Π“ΡƒΠ»Π°ΠΌΠΎΠΌ', 'NOUN')), (('Π“ΡƒΠ»Π°ΠΌΠΎΠΌ', 'NOUN'), 'case', ('с', 'ADP')), (('ΠΏΡ€ΠΎΠ΄Π»ΠΈΠ»', 'VERB'), 'punct', ('.', 'PUNCT'))]

Π’Ρ€ΠΎΠΉΠΊΠΈ ΡΡƒΠ±ΡŒΠ΅ΠΊΡ‚-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-Π³Π»Π°Π³ΠΎΠ»:

for sent_dep in deps: graph = DependencyGraph(tree_str=sent_dep) sov = {} for triple in graph.triples(): if triple: if triple[0][1] == 'VERB': sov[triple[0][0]] = {'subj':'','obj':''} for triple in graph.triples(): if triple: if triple[1] == 'nsubj': if triple[0][1] == 'VERB': sov[triple[0][0]]['subj'] = triple[2][0] if triple[1] == 'dobj': if triple[0][1] == 'VERB': sov[triple[0][0]]['obj'] = triple[2][0] for verb in sov: print(verb,sov[verb])
испСк {'subj': 'ΠΏΠ΅Ρ‡Π΅Π½ΡŒΠ΅', 'obj': 'Google'} стал {'subj': 'ΠžΠ²Π΅Ρ‡ΠΊΠΈΠ½', 'obj': ''} Π·Π°Π΄Π΅Ρ€ΠΆΠ°Π»ΠΈ {'subj': '', 'obj': 'ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌΠΎΠ³ΠΎ'} вынСс {'subj': 'суд', 'obj': 'ΠΏΡ€ΠΈΠ³ΠΎΠ²ΠΎΡ€'} закрасили {'subj': 'Π§ΠΈΠ½ΠΎΠ²Π½ΠΈΠΊΠΈ', 'obj': 'ΠΌΠ΅ΠΌΠΎΡ€ΠΈΠ°Π»'} ΠΏΡ€ΠΎΠ΄Π»ΠΈΠ» {'subj': 'ΠšΠ»ΡƒΠ±', 'obj': 'ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚'}

Π—Π°Π΄Π°Π½ΠΈΠ΅ 5

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ Π²Ρ‹ΡˆΠ΅ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π»ΠΈΡΡŒ: 1. ΠžΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Π΅ Ρ‡Π»Π΅Π½Ρ‹ прСдлоТСния * (ΠΏΠ°Ρ€ΠΊ, ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠ°), (ГСрмания, ЩвСйцария) 2. Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ сказуСмыС * (Π½Π°Ρ‡Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ), (Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΠ» ΠΏΡ€ΠΎΠ²ΠΎΠ·ΠΈΡ‚ΡŒ) 3. НСпрямыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ * (Π΅Π΄Π΅Ρ‚, ΠŸΠΎΠ»ΡŒΡˆΡƒ), (спСл, скандалС)