nltk.tree.Tree
ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ chomsky_normal_form()
, Π° Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ - Π½Π΅Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ CNF - ΡΡΠΎ ΡΠΎΡΠΌΠ° Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ , ΠΎΠ½Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π°.
chomsky_normal_form()
Π² NLTK - ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π±ΠΈΠ½Π°ΡΠΈΠ·Π°ΡΠΈΠΈ Π΄Π΅ΡΠ΅Π²Π°. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π΅Π³ΠΎ Π½Π΅Π»ΡΠ·Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΊ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ°ΠΌ, ΡΠΌ. Https://github.com/nltk/nltk/blob/develop/nltk/treetransforms.py
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ Π² CNF Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ. ΠΡΠ»ΠΎ Π±Ρ Ρ ΠΎΡΠΎΡΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ Π±ΡΠ»Π° ΠΏΠΎΠΏΡΡΠΊΠ°, Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠΌ.
ΠΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½ Π² ΡΡΠ°ΡΡΠΈΠΈ, Ρ ΠΎΡΠΎΡΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π°:
Π― ΠΈΡΠΊΠ°Π» ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ ΠΈ Π½Π°ΡΠΊΠ½ΡΠ»ΡΡ Π·Π΄Π΅ΡΡ,
Π― ΡΠΎΠ·Π΄Π°Π» ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ nltk Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΌΠΎΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² (Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ CKY ΠΏΠΎΠ²Π΅ΡΡ
Π½Π΅Π³ΠΎ, Ρ
ΠΎΡΡ ΠΈ Π±Π΅Π· Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ, Π½ΠΎ Ρ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ
Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ATIS ), Π±ΡΠ» Π±Ρ ΡΠ°Π΄ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ PR, ΠΏΡΠΎΡΡΠΎ Ρ
ΠΎΡΠ΅Π» ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ, ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ Π»ΠΈ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Π° Π»ΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Π² https://github.com/nltk/nltk/issues/1722)
Π’Π°ΠΊΠΆΠ΅, Π΅ΡΠ»ΠΈ Π½Π΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° CYK, ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠ³ΠΎ Π² Π΄ΡΡΠ³ΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅, Ρ Π±ΡΠ» Π±Ρ ΡΠ°Π΄ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ PR ΠΈ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ.
@virresh @alvations ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅, ΡΡΠΎ # 1722
@virresh ΠΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅
https://github.com/aetilley/pcfg/blob/master/src/pcfg.py#L524
Π― ΠΏΠΎΠΌΠ½Ρ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΠ΅ΡΠ΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π» ΡΠ°Π³ΠΈ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ΅, Π½ΠΎ Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠ½Ρ, ΠΊΠ°ΠΊ ΡΠ±Π΅ΠΆΠ΄Π°Π» ΡΠ΅Π±Ρ, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ. ΠΠ΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΡΡ.
Π― Π·Π°ΠΊΡΠΎΡ Π΄ΡΡΠ³ΠΎΠΉ Π²ΡΠΏΡΡΠΊ.
ΠΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ CNF Π΄Π»Ρ CFG; ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎ:
import nltk
grammar = nltk.data.load("grammars/large_grammars/atis.cfg")
grammar = grammar.chomsky_normal_form()
print(len(grammar.productions()))
print(len(list(set(grammar.productions()))))
Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ 20344
production, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Π² Π½Π°Π±ΠΎΡ Π΄Π°ΡΡ 12396
productions.