Esempio n. 1
0
def nls_result(request):
    q = request.GET['q']
    p = int(request.GET['p'])
    tfidf = NLP_LSI_TFIDF()
    result = tfidf.getResult(query=q, page=p)
    pages = []
    f = result[1]
    total_p = (result[0] / 10) + 1
    t_p = int(total_p)
    p_p = max(p - 5, 1)
    n_p = min(p + 5, total_p)
    while total_p > 0:
        pages.append(0)
        total_p -= 1
    files = []
    for f_f in f:
        f_name = f_f[0]
        temp = fci.to_fciObject(config.configs['paths']['FCI_path'] + "/so/" + f_name)
        m_l = ''
        for t_f_f in f_f[1]:
            m_l += str(t_f_f + 1)
            m_l += ','
        m_l = m_l[0:len(m_l) - 1]
        fei = FrontEndInterface(temp, m_l)
        files.append(fei)
    return render(request, 'nlp-result.html',
                  {'results': files, 'q': q, 'p': p, 'pages': pages, 'p_p': p_p, 'n_p': n_p, 'pre': p - 1,
                   'next': p + 1, 't_p': t_p})
def detail(request):
    id = request.GET['id']
    ml = request.GET['ml']
    m_l = ml
    fci_obj = fci.to_fciObject(config.configs['paths']['FCI_path'] + "/lsi/" +
                               id + '.json')
    return render(request, 'detail.html', {
        'detail': fci_obj,
        'match_lines': m_l
    })
def search(request):
    q = request.GET['q']
    p = int(request.GET['p'])

    timestamp = time.time()
    client = Client("as", "137.43.92.9", 9609, {
        'operate_type': 1,
        'query': q,
        'page': p,
        'timestamp': str(timestamp)
    })
    client.send_message()
    server = CommunicationServer()
    message = server.receive_message(socket_name=str(timestamp))
    result = message['result']
    # tfidf = LSI_TFIDF()
    # result = tfidf.getResult(query=q, page=p)
    pages = []
    f = result[1]
    total_p = (result[0] / configs['others']['page_num']) + 1
    t_p = int(total_p)
    p_p = max(p - 5, 1)
    n_p = min(p + 5, total_p)
    while total_p > 0:
        pages.append(0)
        total_p -= 1
    files = []
    for f_f in f:
        f_name = f_f[0]
        temp = fci.to_fciObject(config.configs['paths']['FCI_path'] + "/lsi/" +
                                f_name)
        m_l = ''
        for t_f_f in f_f[1]:
            m_l += str(t_f_f + 1)
            m_l += ','
        m_l = m_l[0:len(m_l) - 1]
        fei = FrontEndInterface(temp, m_l)
        files.append(fei)
    return render(
        request, 'search-result.html', {
            'results': files,
            'q': q,
            'p': p,
            'pages': pages,
            'p_p': p_p,
            'n_p': n_p,
            'pre': p - 1,
            'next': p + 1,
            't_p': t_p
        })
Esempio n. 4
0
def snippet_detail(request):
    id = request.GET['id']
    ml = request.GET['ml']
    qml = request.GET['qml']
    timestamp = request.GET['ts']
    l = int(request.GET['l'])
    r = redis.Redis(host='localhost', port=6379, decode_responses=True)
    q = r.get(timestamp)
    language = ''
    print(l)
    if l == 3:
        language = 'python'
    else:
        language = 'java'
    m_l = ml
    fci_obj = fci.to_fciObject(config.configs['paths']['FCI_path'] + "/" + language + "/" + id + '.json')
    return render(request, 'snippet-detail.html',
                  {'detail': fci_obj, 'match_lines': m_l, 'query_match_lines': qml, 'query': q})
def plagiarizeResult(request):
    snippet = request.POST['snippet']
    page = int(request.POST['p'])
    operate_type = request.POST['l']
    timestamp = time.time()
    m = hashlib.md5()
    m.update((str(timestamp) + snippet).encode("utf8"))
    ts = m.hexdigest()
    r = redis.Redis(host='localhost', port=6379, decode_responses=True)
    r.set(ts, snippet, ex=3000)
    operate_type = int(operate_type)
    # timestamp = time.time()
    # client = Client("yeats.ucd.ie", "10.141.131.14", 9609,
    #                 {'operate_type': operate_type, 'query': snippet, 'page': page, 'timestamp': timestamp})
    # client.send_message()
    # server = CommunicationServer()
    # message = server.receive_message(socket_name=str(timestamp))
    # result = message['result']
    ast = None
    language = ''
    if operate_type == 3:
        # ast = ASTSearching()
        ast = 3
        language = 'python'
    else:
        # ast = JavaAST()
        ast = 4
        language = 'java'
    timestamp = time.time()
    client = Client(
        "as", "137.43.92.9", 9609, {
            'operate_type': ast,
            'query': snippet,
            'page': page,
            'timestamp': str(timestamp)
        })
    client.send_message()
    server = CommunicationServer()
    message = server.receive_message(socket_name=str(timestamp))
    result = message['result']
    # result = ast.getResults(snippet, page)
    if result == 0:
        return render(request, 'snippet-result.html', {
            'snippet': snippet,
        })
    else:
        result = result.to_dict()
    is_global = False
    plagiarize_list = []
    document_list = []
    component_document = []
    global_similarity = 0
    if result != None:
        total_num = result['numOfResults']
        total_page = (total_num / config.configs['others']['page_num']) + 1
        matching_blocks = result['matchingBlocks']
        global_similarity = result['globalSimilarity']
        matching_lines = result['matchingLines']
        blockWeights = result['blockWeights']
        if global_similarity != None and global_similarity > 0:
            is_global = True
            cd = result['componentDocuments']
            component_document = []
            for c in cd:
                qml = str(matching_blocks[c][0]) + '-' + str(
                    matching_blocks[c][1])
                ml = ''
                for mls in matching_lines[c]:
                    ml += str(mls[2]) + '-' + str(mls[3]) + ','
                print(qml)
                fobj = fci.to_fciObject(config.configs['paths']['FCI_path'] +
                                        "/" + language + "/" + c)
                fei = FrontEndInterface(fobj, ml)
                fei.set_query_match_lines(qml)
                print(fei.get_query_match_lines(), '==========')
                component_document.append(fei)
        for t in result['plagiarismList']:
            ml = ''
            qml = ''
            for mls in matching_lines[t]:
                qml += str(mls[0]) + '-' + str(mls[1]) + ','
                ml += str(mls[2]) + '-' + str(mls[3]) + ','
            fobj = fci.to_fciObject(config.configs['paths']['FCI_path'] + "/" +
                                    language + "/" + t)
            fei = FrontEndInterface(fobj, ml)
            fei.set_query_match_lines(qml)
            plagiarize_list.append(fei)
        for t in result['documentList']:
            ml = ''
            qml = ''
            for mls in matching_lines[t]:
                qml += str(mls[0]) + '-' + str(mls[1]) + ','
                ml += str(mls[2]) + '-' + str(mls[3]) + ','
            fobj = fci.to_fciObject(config.configs['paths']['FCI_path'] + "/" +
                                    language + "/" + t)
            fei = FrontEndInterface(fobj, ml)
            fei.set_query_match_lines(qml)
            document_list.append(fei)
        if global_similarity != None:
            global_similarity *= 100
            global_similarity = '%.2f' % global_similarity
    return render(
        request, 'snippet-result.html', {
            'snippet': snippet,
            "is_global": is_global,
            'component_documents': component_document,
            "global_similarity": global_similarity,
            "plagiarize_list": plagiarize_list,
            "document_list": document_list,
            "l": operate_type,
            'ts': ts
        })