You can also see Cython, Java, C++, C, Swift, Js, or C# repository.
To check if you have a compatible version of Python installed, use the following command:
python -V
You can find the latest version of Python here.
Install the latest version of Git.
pip3 install NlpToolkit-Util
In order to work on code, create a fork from GitHub page. Use Git for cloning the code to your local or below line for Ubuntu:
git clone <your-fork-git-link>
A directory called Util will be created. Or you can use below link for exploring the code:
git clone https://github.com/starlangsoftware/Util-Py.git
Steps for opening the cloned project:
- Start IDE
- Select File | Open from main menu
- Choose
Util-PYfile - Select open as project option
- Couple of seconds, dependencies will be downloaded.
Aralık veri yapısını tutmak için Interval sınıfı
a = Interval()
1 ve 4 aralığı eklemek için
a.add(1, 4)
i. aralığın başını getirmek için (yukarıdaki örnekteki 1 gibi)
getFirst(self, index: int) -> int
i. aralığın sonunu getirmek için (yukarıdaki örnekteki 4 gibi)
getLast(self, index: int) -> int
Altküme tanımlamak ve tüm altkümelere ulaşmak için Subset ve SubsetFromList sınıfları
Subset veri yapısını tanımlamak için
Subset(self, rangeStart: int, rangeEnd: int, elementCount: int)
Burada elemenCount elemanlı, elemanları rangeStart ile rangeEnd arasında değerler alabilen tüm altkümeleri gezen bir yapıdan bahsediyoruz. Örneğin
Subset(1, 4, 2), bize iki elemanlı elemanlarını 1 ile 4 arasından gelen tüm alt kümeleri seçmek için kullanılan bir constructor'dır. Tüm altkümeleri elde etmek için
a = Subset(1, 4, 2);
subset = a.get()
while a.next():
subset = a.get()
....
Burada subset sırasıyla {1, 2}, {1, 3}, {1, 4}, {2, 3}, {2, 4}, {3, 4} altkümelerini gezer.
Altküme tanımlamak ve tüm altkümelere ulaşmak için Subset ve SubsetFromList sınıfları
SubsetFromList veri yapısını kullanmak için
SubsetFromList(self, _list: list, elementCount: int)
Burada elementCount elemanlı, elemanları list listesinden çekilen değerler olan ve tüm altkümeleri gezen bir yapıdan bahsediyoruz. Örneğin
SubsetFromList([1, 2, 3, 4], 3), bize üç elemanlı elemanlarını [1, 2, 3, 4] listesinden seçen ve tüm alt kümeleri gezmekte kullanılan bir constructor'dır. Tüm altkümeleri elde etmek için
a = SubsetFromList([1, 2, 3, 4], 3)
subset = a.get()
while a.next():
subset = a.get()
....
Burada SubsetFromList sırasıyla {1, 2, 3}, {1, 2, 4}, {1, 3, 4}, {2, 3, 4} altkümelerini gezer.
Permütasyon tanımlamak ve tüm permütasyonlara ulaşmak için Permutation sınıfı
Permutation(self, n: int)
Burada 0 ile n - 1 arasındaki değerlerin tüm olası n'li permütasyonlarını gezen bir yapıdan bahsediyoruz. Örneğin
Permutation(5), bize değerleri 0 ile 4 arasında olan tüm 5'li permütasyonları gezmekte kullanılan bir constructor'dır. Tüm permütasyonları elde etmek için
a = Permutation(5)
permutation = a.get()
while a.next():
permutation = a.get();
...
Burada Permutation sırasıyla {0, 1, 2, 3, 4}, {0, 1, 2, 4, 3} gibi permütasyonları gezer.
- Do not forget to set package list. All subfolders should be added to the package list.
packages=['Classification', 'Classification.Model', 'Classification.Model.DecisionTree',
'Classification.Model.Ensemble', 'Classification.Model.NeuralNetwork',
'Classification.Model.NonParametric', 'Classification.Model.Parametric',
'Classification.Filter', 'Classification.DataSet', 'Classification.Instance', 'Classification.Attribute',
'Classification.Parameter', 'Classification.Experiment',
'Classification.Performance', 'Classification.InstanceList', 'Classification.DistanceMetric',
'Classification.StatisticalTest', 'Classification.FeatureSelection'],
- Package name should be lowercase and only may include _ character.
name='nlptoolkit_math',
- Do not forget to comment each function.
def __broadcast_shape(self, shape1: Tuple[int, ...], shape2: Tuple[int, ...]) -> Tuple[int, ...]:
"""
Determines the broadcasted shape of two tensors.
:param shape1: Tuple representing the first tensor shape.
:param shape2: Tuple representing the second tensor shape.
:return: Tuple representing the broadcasted shape.
"""
- Function names should follow caml case.
def addItem(self, item: str):
- Local variables should follow snake case.
det = 1.0
copy_of_matrix = copy.deepcopy(self)
- Class variables should be declared in each file.
class Eigenvector(Vector):
eigenvalue: float
- Variable types should be defined for function parameters and class variables.
def getIndex(self, item: str) -> int:
- For abstract methods, use ABC package and declare them with @abstractmethod.
@abstractmethod
def train(self, train_set: list[Tensor]):
pass
- For private methods, use __ as prefix in their names.
def __infer_shape(self, data: Union[List, List[List], List[List[List]]]) -> Tuple[int, ...]:
- For private class variables, use __ as prefix in their names.
class Matrix(object):
__row: int
__col: int
__values: list[list[float]]
- Write __repr__ class methods as toString methods
- Write getter and setter class methods.
def getOptimizer(self) -> Optimizer:
return self.optimizer
def setValue(self, value: Optional[Tensor]) -> None:
self._value = value
- If there are multiple constructors for a class, define them as constructor1, constructor2, ..., then from the original constructor call these methods.
def constructor1(self):
self.__values = []
self.__size = 0
def constructor2(self, values: list):
self.__values = values.copy()
self.__size = len(values)
def __init__(self,
valuesOrSize=None,
initial=None):
if valuesOrSize is None:
self.constructor1()
elif isinstance(valuesOrSize, list):
self.constructor2(valuesOrSize)
- Extend test classes from unittest and use separate unit test methods.
class TensorTest(unittest.TestCase):
def test_inferred_shape(self):
a = Tensor([[1.0, 2.0], [3.0, 4.0]])
self.assertEqual((2, 2), a.getShape())
def test_shape(self):
a = Tensor([1.0, 2.0, 3.0])
self.assertEqual((3, ), a.getShape())
- Enumerated types should be used when necessary as enum classes.
class AttributeType(Enum):
"""
Continuous Attribute
"""
CONTINUOUS = auto()
"""
Discrete Attribute
"""
DISCRETE = auto()