Skip to content

StarlangSoftware/DataGenerator-Cy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Data Generator

Video Lectures

For Developers

You can also see Python, Java, Js, C++, C, Swift, or C# repository.

Requirements

Python

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.

Git

Install the latest version of Git.

Pip Install

pip3 install NlpToolkit-DataGenerator-Cy

Download Code

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 DataGenerator will be created. Or you can use below link for exploring the code:

git clone https://github.com/starlangsoftware/DataGenerator-Cy.git

Open project with Pycharm IDE

Steps for opening the cloned project:

  • Start IDE
  • Select File | Open from main menu
  • Choose DataGenerator-CY file
  • Select open as project option
  • Couple of seconds, dependencies will be downloaded.

Detailed Description

AnnotatedDataSetGenerator

DataSet yaratmak için AnnotatedDataSetGenerator sınıfı önce üretilir.

AnnotatedDataSetGenerator(self, folder: str, pattern: str, instanceGenerator: InstanceGenerator)

Ardından generate metodu ile DataSet yaratılır.

generate(self) -> DataSet

InstanceGenerator

DataGeneratorlerin InstanceGeneratorlere ihtiyacı vardır. Bunlar bir tek kelimeden bir Instance yaratan sınıflardır.

generateInstanceFromSentence(self, sentence: Sentence, wordIndex: int) -> Instance

NER problemi için NerInstanceGenerator, FeaturedNerInstanceGenerator ve VectorizedNerInstanceGeneratorsınıfı

ShallowParse problemi için ShallowParseInstanceGenerator, FeaturedShallowParseInstanceGenerator ve VectorizedShallowParseInstanceGenerator sınıfı

WSD problemi için SemanticInstanceGenerator, FeaturedSemanticInstanceGenerator ve VectorizedSemanticInstanceGenerator sınıfı

Morphological Disambiguation problemi için FeaturedDisambiguationInstanceGenerator sınıfı

Cite

If you use this resource on your research, please cite the following paper:

@article{acikgoz,
  title={All-words word sense disambiguation for {T}urkish},
  author={O. Açıkg{\"o}z and A. T. G{\"u}rkan and B. Ertopçu and O. Topsakal and B. {\"O}zenç and A. B. Kanburoğlu and {\.{I}}. Çam and B. Avar and G. Ercan and O. T. Y{\i}ld{\i}z},
  journal={2017 International Conference on Computer Science and Engineering (UBMK)},
  year={2017},
  pages={490-495}
}
@inproceedings{ertopcu17,  
	author={B. {Ertopçu} and A. B. {Kanburoğlu} and O. {Topsakal} and O. {Açıkgöz} and A. T. {Gürkan} and B. {Özenç} and İ. {Çam} and B. {Avar} and G. {Ercan} and O. T. {Yıldız}},  
	booktitle={2017 International Conference on Computer Science and Engineering (UBMK)},  title={A new approach for named entity recognition},   
	year={2017},  
	pages={474-479}
}

For Contibutors
============

### Setup.py file
1. 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'],
2. Package name should be lowercase and only may include _ character.
name='nlptoolkit_math',
3. Package data should be defined and must ibclude pyx, pxd, c and py files.
package_data={'NGram': ['*.pxd', '*.pyx', '*.c', '*.py']},
4. Setup should include ext_modules with compiler directives.
ext_modules=cythonize(["NGram/*.pyx"],
                      compiler_directives={'language_level': "3"}),

### Cython files
1. Define the class variables and class methods in the pxd file.

cdef class DiscreteDistribution(dict):

cdef float __sum

cpdef addItem(self, str item)
cpdef removeItem(self, str item)
cpdef addDistribution(self, DiscreteDistribution distribution)
2. For default values in class method declarations, use *.
cpdef list constructIdiomLiterals(self, FsmMorphologicalAnalyzer fsm, MorphologicalParse morphologicalParse1,
                           MetamorphicParse metaParse1, MorphologicalParse morphologicalParse2,
                           MetamorphicParse metaParse2, MorphologicalParse morphologicalParse3 = *,
                           MetamorphicParse metaParse3 = *)
3. Define the class name as cdef, class methods as cpdef, and \_\_init\_\_ as def.

cdef class DiscreteDistribution(dict):

def __init__(self, **kwargs):
    """
    A constructor of DiscreteDistribution class which calls its super class.
    """
    super().__init__(**kwargs)
    self.__sum = 0.0

cpdef addItem(self, str item):
4. Do not forget to comment each function.
cpdef addItem(self, str item):
    """
    The addItem method takes a String item as an input and if this map contains a mapping for the item it puts the
    item with given value + 1, else it puts item with value of 1.

    PARAMETERS
    ----------
    item : string
        String input.
    """
5. Function names should follow caml case.
cpdef addItem(self, str item):
6. Local variables should follow snake case.
det = 1.0
copy_of_matrix = copy.deepcopy(self)
7. Variable types should be defined for function parameters, class variables.
cpdef double getValue(self, int rowNo, int colNo):
8. Local variables should be defined with types.
cpdef sortDefinitions(self):
    cdef int i, j
    cdef str tmp
9. For abstract methods, use ABC package and declare them with @abstractmethod.
@abstractmethod
def train(self, train_set: list[Tensor]):
    pass
10. For private methods, use __ as prefix in their names.
cpdef list __linearRegressionOnCountsOfCounts(self, list countsOfCounts)
11. For private class variables, use __ as prefix in their names.

cdef class NGram: cdef int __N cdef double __lambda1, __lambda2 cdef bint __interpolated cdef set __vocabulary cdef list __probability_of_unseen

12. Write \_\_repr\_\_ class methods as toString methods
13. Write getter and setter class methods.
cpdef int getN(self)
cpdef setN(self, int N)
14. If there are multiple constructors for a class, define them as constructor1, constructor2, ..., then from the original constructor call these methods.

cdef class NGram:

cpdef constructor1(self, int N, list corpus):
cpdef constructor2(self, str fileName):
def __init__(self,
             NorFileName,
             corpus=None):
    if isinstance(NorFileName, int):
        self.constructor1(NorFileName, corpus)
    else:
        self.constructor2(NorFileName)
15. Extend test classes from unittest and use separate unit test methods.

class NGramTest(unittest.TestCase):

def test_GetCountSimple(self):
16. For undefined types use object as type in the type declarations.

cdef class WordNet:

cdef object __syn_set_list
cdef object __literal_list
17. For boolean types use bint as type in the type declarations.
cdef bint is_done
18. Enumerated types should be used when necessary as enum classes, and should be declared in py files.

class AttributeType(Enum): """ Continuous Attribute """ CONTINUOUS = auto() """

19. Resource files should be taken from pkg_recources package.
fileName = pkg_resources.resource_filename(__name__, 'data/turkish_wordnet.xml')

About

Classification dataset generator library for high level Nlp tasks

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

 
 
 

Contributors