Meiko & DreamKiller
Π― ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π»Π° Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΡΠ²Π»ΡΠ΅Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π½Π΅ΡΡΡΠΊΠΎΠ²ΠΊΠΈ Π² ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠ΅ β ΠΊΠ°ΠΊ Π±Ρ Π΄Π΅ΡΠ΅ΠΊΡΠΎΡ Π»ΠΆΠΈ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ°. ΠΡΠΌΠ°Ρ, ΠΎΠ½ ΡΠ΅Π±Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Π΄Π°ΠΆΠ΅ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΏΡΠΎΡΡΡΠΌ Π·Π°ΠΊΠ°Π·ΠΎΠΌ ΠΊΠΎΡΠ΅, ΠΈΠ»ΠΈ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π΄Π°ΠΆΠ΅ Ρ ΡΠ²ΠΎΠΈΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΌΠΎΠΌ. Π₯ΠΎΡΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ?
ΠΠ°, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΠΉ. Π’ΠΎΠ»ΡΠΊΠΎ ΡΠΌΠΎΡΡΠΈ, ΠΏΡΡΡΡ Π½Π΅ ΠΏΡΡΠ°Π΅ΡΡΡ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΡ Π² ΠΊΠΎΡΠ΅ ΠΈΠ»ΠΈ ΠΌΠΎΠΉ Π½Π΅ΠΏΡΠΈΠΊΡΡΡΡΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΌ.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ. ΠΠΎΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° Python, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π½ΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡ ΠΈ ΡΡΠΈΡΠ°Π΅Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ, ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠ°ΡΠΈΠ΅ ΡΠ°Π½Π΅Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ ΡΠ°ΠΊΡΠ°ΠΌ. ΠΠ½ Π²Π΅Π΄ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠ°ΠΊΡΠΎΠ² ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π½ΠΎΠ²ΠΎΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΠ΅Ρ Ρ ΡΠΆΠ΅ ΡΠΎΡ
ΡΠ°Π½ΡΠ½Π½ΡΠΌ. ΠΠΎΡΠ΅ ΠΈ "ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΌ" ΠΎΠ½ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ, Π΅ΡΠ»ΠΈ ΡΡ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΈΡ
ΡΠ²Π½ΠΎ.
```python
# simple_contradiction_checker.py
def add_fact(facts, key, value):
"""Π‘ΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ ΡΠ°ΠΊΡ; Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ, Π΅ΡΠ»ΠΈ ΠΊΠ»ΡΡ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Ρ Π΄ΡΡΠ³ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ."""
if key in facts and facts[key] != value:
raise ValueError(f"ΠΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΎ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΠ΅: {key} Π±ΡΠ» {facts[key]}, ΡΠ΅ΠΏΠ΅ΡΡ {value}")
facts[key] = value
def check_text(text):
"""
ΠΡΠ΅Π½Ρ Π½Π°ΠΈΠ²Π½ΡΠΉ ΠΏΠ°ΡΡΠΈΠ½Π³: ΠΈΡΠ΅Ρ ΡΡΠ°Π·Ρ ΡΠΈΠΏΠ° "X β ΡΡΠΎ Y" ΠΈΠ»ΠΈ "X ΠΈΠΌΠ΅Π΅Ρ Y".
ΠΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ΅ NLP-ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π½ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ.
"""
import re
facts = {}
# ΡΠ°Π±Π»ΠΎΠ½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ 'X is Y', 'X has Y', 'X is a Y' ΠΈ Ρ.Π΄.
pattern = re.compile(r'(\w+)\s+(?:is|has|is a|is an)\s+(\w+)', re.IGNORECASE)
for match in pattern.finditer(text):
subject, obj = match.group(1).lower(), match.group(2).lower()
try:
add_fact(facts, subject, obj)
except ValueError as e:
print(e)
return facts
if __name__ == "__main__":
sample = """
The sky is blue.
The sky has clouds.
The sky is green.
I am a programmer.
"""
print("Initial facts:")
print(check_text(sample))
```
ΠΠ°ΠΏΡΡΡΠΈ Π΅Π³ΠΎ, ΠΏΠΎΠ΄ΡΠΎΠ²ΡΠ²Π°ΠΉ ΡΠ²ΠΎΠΉ Π°Π±Π·Π°Ρ, ΠΈ ΠΎΠ½ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΠ΅ β Π±Π΅Π· Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΠΊΠΎΡΠ΅ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΌΠ°, ΠΏΡΠΎΡΡΠΎ ΡΠ°ΠΊΡΡΠ΅ΠΊΠΈΠ½Π³.