PDA

Просмотр полной версии : Построение базы


Niko_Cry
16.03.2018, 17:02
Добрый день) Не могли бы помочь с построение базы данных. Я новенький в этом, и хотелось бы совета от знающих людей.
У меня есть цель, построить базу SQLite. И в двух словах о программе к которой будет привинчена эта самая база: программа сравнивает два программных кода на плагиат.
И требование к базе : не меньше 4 таблиц в которых по 5 полей. Столкнулся еще с проблемой на счет таблицы "History". В ней будут сведения какой код с каким будет сравниваться. Но как правильно реализовать не понимаю. Может кто-то подскажет или скажет замечание) За ранее спасибо)
Вот что у меня вышло.
Спасибо за помощь и ваше время. Буду очень вам благодарен.

InetTester
10.11.2018, 12:55
Niko_Cry сказал(а):

Добрый день) Не могли бы помочь с построение базы данных. Я новенький в этом, и хотелось бы совета от знающих людей.
У меня есть цель, построить базу SQLite. И в двух словах о программе к которой будет привинчена эта самая база: программа сравнивает два программных кода на плагиат.
И требование к базе : не меньше 4 таблиц в которых по 5 полей. Столкнулся еще с проблемой на счет таблицы "History". В ней будут сведения какой код с каким будет сравниваться. Но как правильно реализовать не понимаю. Может кто-то подскажет или скажет замечание) За ранее спасибо)
Вот что у меня вышло.
Спасибо за помощь и ваше время. Буду очень вам благодарен.



Если нужно сравнивать именно два 'кода' скорее всего тебе потребуется использовать 'алгоритм шинглов' в результате данный скрипт выдаст в % на сколько первый код схож со вторым.
Вот к примеру реализация на Python:

Код:



# -*- coding: UTF-8 -*-
if __name__ == '__build__':
raise Exception

def canonize(source):
stop_symbols = '.,!?:;-\n\r()'

stop_words = (u'это', u'как', u'так',
u'и', u'в', u'над',
u'к', u'до', u'не',
u'на', u'но', u'за',
u'то', u'с', u'ли',
u'а', u'во', u'от',
u'со', u'для', u'о',
u'же', u'ну', u'вы',
u'бы', u'что', u'кто',
u'он', u'она')

return ( [x for x in [y.strip(stop_symbols) for y in source.lower().split()] if x and (x not in stop_words)] )

def genshingle(source):
import binascii
shingleLen = 10 #длина шингла
out = []
for i in range(len(source)-(shingleLen-1)):
out.append (binascii.crc32(' '.join( [x for x in source[i:i+shingleLen]] ).encode('utf-8')))

return out

def compaire (source1,source2):
same = 0
for i in range(len(source1)):
if source1[i] in source2:
same = same + 1

return same*2/float(len(source1) + len(source2))*100

def main():
text1 = u'' # Текст 1 для сравнения
text2 = u'' # Текст 2 для сравнения

cmp1 = genshingle(canonize(text1))
cmp2 = genshingle(canonize(text2))

print compaire(cmp1,cmp2)

# Start program
main()