src.KNN.faissKNN module

class src.KNN.faissKNN.KNNService

Bases: PyQt5.QtCore.QObject

The KNN microservice

Parameters

QObject (QObject) – So that we can use QT signal/slots

calculateFinalVector(sentence)

Calculate the semantic request, for example king-man+woman

Parameters

sentence (string) – the linalg expression (or single words)

Returns

The calculated word vector

Return type

resultedVector

checkWords(wordList, wordDict)

Check whether all words are found in the file in

Parameters
  • wordList ([string]) – List of words used in the requested

  • wordDict (dict{string,[float]}) – List of words found in the file with corresponding vectors

Returns

Whether all words have been found

Return type

Bool

clearVariables()

Clear all the variables to default (TODO, find more clean way of doing this)

getAllDistances(request, context)
getKNNBatch(request, context)

Gets the kNN for a batch of vectors.

Parameters
  • request (gRPC) – standard gRPC (contains the messages)

  • request.vectors ([Vector]) – the vectors of which the kNN must be returned

  • request.k (int) – number of nearest neighbours that should be returned per vector

  • context (gRPC) – standard gRPC

Returns

NeighboursBatch.neighbours contains Row objects with the nearest neighbours.

This is in order of the vectors given.

Return type

NeighboursBatch

getKNNRequest(request, context)

Implementation for gRPC message to connect to for the general requests

Parameters
  • request (gRPC) – standard gRPC (contains the messages)

  • context (gRPC) – standard gRPC

Returns

gRPC message containing the words and distances

Return type

grpc Neighbours objects

getProgress(request, context)

Implementation for the getProgress gRPC requset

Parameters
  • request (gRPC) – standard gRPC (contains the messages)

  • context (gRPC) – standard gRPC

Returns

contains the integer of current progress

Return type

grPC progressKNN

getVectors(wordList)

Find the vector per word in the given datafile

Parameters

wordList ([word]) – List of used words

Returns

The dictionary of word, wordVector combinations

Return type

Dict

getWords(indicesSorted)

Searches and returns the words/labels of indices.

Parameters

indicesSorted ([int]) – indices of vectors of which labels must be found in ascending order

Raises

Exception – throws a exception when requested index was not found in file

Returns

string}: contains the indices as key and requested labels as values

Return type

{int

knnVector(vector, k)

Use the index object to extract closest words / distances and

Parameters
  • vector ([float]) – The calculated word vector

  • k (int) – How many neighbours we want to

Returns

gRPC message containing the words and distances

Return type

neighbours

printClosest(indices, wordsDict, distances)

For debugging, print the results of the KNN request

Parameters
  • indices ([[int]]) – 2d list of the closest indices

  • distances ([[float]]) – 2d list of distances to closest words (specified in indices)

progressSignal
startKNNService(request, context)

Setup the KNN serive

Parameters
  • request (gRPC) – standard gRPC (contains the messages)

  • context (gRPC) – standard gRPC

Returns

returns void

Return type

gRPC empty

stopKNNService(request, context)

Stop the current service

Parameters
  • request (gRPC) – standard gRPC (contains the messages)

  • context (gRPC) – standard gRPC

Returns

grPC void

trainKNN()

Train the KNN with the given filePath

updatePercentage()

Recalculate the current percentage

src.KNN.faissKNN.printMessage(message)

Print the coloured message so that we can see in the output which microservice printed it

Parameters

message (string) – The actual message

src.KNN.faissKNN.serveServer()

Setup the GRPC server