#!/usr/bin/python ########################################################################### # # besede - Words Transformations Network # # wdir=r'c:\users\Batagelj\work\Python\words'; import sys; sys.path.append(wdir) # wdir=r'D:\Vlado\work\Delphi\words'; import sys; sys.path.append(wdir) # # import besede; besede.run() # reload(besede); besede.run() # # Vladimir Batagelj, 8. December 2007 # ########################################################################### import string, os, sys, datetime def indVert(b): global nver, vert, vertices if vert.has_key(b): return vert[b] else: nver = nver + 1; vert[b] = nver vertices.write(str(nver)+' "'+b+'"\n') return nver def run(step=10000): global nver, vert, vertices wdir=r'c:\users\Batagelj\work\Python\words' vertices = open(wdir+'\\'+'vertices.tmp', 'w') vertices.write('% besede / '+datetime.datetime.now().ctime()+'"\n') vertices.write('*vertices \n') print "started: ", datetime.datetime.now().ctime() edges = open(wdir+'\\'+'edges.tmp', 'w') besede=open(wdir+'\\'+'besede3.txt', 'r').read().split('\n') print "words = ", len(besede) s = [] for b in besede: for i in range(len(b)) : s.append( ( b[:i]+'*'+b[i+1:], b )) for i in range(len(b)+1) : s.append( ( b[:i]+'*'+b[i:], b )) print "patterns = ", len(s) s.sort() print "sorted : ", datetime.datetime.now().ctime() vert = {}; nver = 0 k = '***'; p = []; n = 0 for t in s: n = n + 1 if (n % step) == 0: print n,': ',t if k != t[0]: if len(p) > 1: for i in range(len(p)): u = p[i] for v in p[i+1:]: if len(u)==len(v): r = 1 else: r = 2 edges.write(str(r)+': '+str(indVert(u))+' '+str(indVert(v))+'\n') k = t[0] p = [t[1]] else: p.append(t[1]) print "finished: ", datetime.datetime.now().ctime() vertices.close() edges.close()