Update getgrams
This commit is contained in:
parent
1baeb59a85
commit
b19a4a46f0
65
getgrams.py
65
getgrams.py
@ -2,39 +2,58 @@
|
||||
|
||||
from collections import Counter
|
||||
from argparse import ArgumentParser
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
|
||||
def checkArguments():
|
||||
args = ArgumentParser(description='Cryptanalyst')
|
||||
args.add_argument('-f', '--filename', help='Text to analyze')
|
||||
args.add_argument('-b', '--bigram', help='Get bigram', action="store_true")
|
||||
args.add_argument('-t', '--trigram', help='Get trigram', action="store_true")
|
||||
return args.parse_args()
|
||||
args = ArgumentParser(description='Cryptanalyst')
|
||||
args.add_argument('-f', '--filename', help='Text to analyze')
|
||||
args.add_argument('-b', '--bigram', help='Get bigram', action="store_true")
|
||||
args.add_argument('-t', '--trigram', help='Get trigram', action="store_true")
|
||||
return args.parse_args()
|
||||
|
||||
def readFile(filename):
|
||||
"""
|
||||
This read the file passed in argument and return the data of it
|
||||
"""
|
||||
text = str()
|
||||
with open(filename, 'r') as f:
|
||||
data = f.readlines()
|
||||
"""
|
||||
This read the file passed in argument and return the data of it
|
||||
"""
|
||||
text = str()
|
||||
with open(filename, 'r') as f:
|
||||
data = f.readlines()
|
||||
|
||||
for entry in data:
|
||||
text += entry
|
||||
for entry in data:
|
||||
text += entry
|
||||
|
||||
return text
|
||||
return text
|
||||
|
||||
def getLetters(text, pos):
|
||||
# return Counter(text[idx : idx + pos] for idx in range(len(text) - 1))
|
||||
return Counter([text[idx: idx + pos] for idx in range(len(text) - 1)])
|
||||
# return Counter(text[idx : idx + pos] for idx in range(len(text) - 1))
|
||||
return Counter([text[idx: idx + pos] for idx in range(len(text) - 1)])
|
||||
|
||||
if __name__ == "__main__":
|
||||
args = checkArguments()
|
||||
text = readFile(args.filename)
|
||||
args = checkArguments()
|
||||
text = readFile(args.filename)
|
||||
|
||||
if args.bigram:
|
||||
data = getLetters(text, 2)
|
||||
if args.trigram:
|
||||
data = getLetters(text, 3)
|
||||
if args.bigram:
|
||||
data = getLetters(text, 2)
|
||||
if args.trigram:
|
||||
data = getLetters(text, 3)
|
||||
|
||||
print(data)
|
||||
dataSorted = {k: v for k, v in sorted(data.items(), key=lambda item: item[1])}
|
||||
lenDataSorted = len(dataSorted)
|
||||
invalidChar = [" ", "!", "?", ":", "\n", "'", ","]
|
||||
dataSorted = list(dataSorted.items())
|
||||
newData1 = []
|
||||
newData2 = []
|
||||
for entry in dataSorted[lenDataSorted - 10:]:
|
||||
#newData[entry[0]] = entry[1]
|
||||
newData1.append(entry[0])
|
||||
newData2.append(entry[1])
|
||||
print(newData1)
|
||||
print(newData2)
|
||||
|
||||
x = [x for x in newData1]
|
||||
y = [tmp for tmp in newData2]
|
||||
|
||||
largeur = 0.5
|
||||
plt.bar(x, y, largeur)
|
||||
plt.show()
|
||||
|
Loading…
Reference in New Issue
Block a user