Friday 27 April 2012

NLP

#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
NLP: this is my python script to generate an appropriate S2.gr: 
Change the words in s2 table to generate your own grammar.
'''

outFile = open("S2.gr", 'w')

s2 = ['EOF','Det','Noun','Prep','Proper','VerbT','VerbBase','Modal']

outFile.write('1\t' + 'S2' + '\n')
for word in s2:
    outFile.write('1\t' + 'S2' + '\t' + '_'+str(word) + '\n') 
for word in s2:
    outFile.write('1\t' + '_'+str(word) + '\t' +str(word) + '\n') 
    for s in s2:
        outFile.write('1\t' + '_'+str(word) + '\t' +str(word) + ' ' + '_'+str(s) + '\n')   
outFile.close()

if __name__ == "__main__":
    print "gosh!"

2 comments:

  1. Dobre pytanie :) To jest specyficzny skrypt dla jednego z zadań na kurs NLP. Zamiast żmudnie pisać ręcznie, ten kawałek kodu generuje ważoną, bezkontekstową gramatykę. Następnie model, który korzysta z tej gramatyki rozkłada każde zdanie i przypisuje mu pewną wagę, na ile jest ono powszechne w języku angielskim. Dzięki temu skryptowi nawet zdanie skonstruowane przez bardzo pijanego Anglika ma przypisane pewne prawdopodobieństwo wystąpienia. Tu chodziło o wyrobienie sobie intuicji, że każdy nawet przypadkowy ciąg słów ma (choć bardzo małe) prawdopodobieństwo wystąpienia w języku naturalnym.

    ReplyDelete