Home

Awesome

pToolNER

Ferramenta para trabalhar com Reconhecimento de Entidades Nomeadas em Português.

Exemplos

Como fazer a filtragem de Entidades Nomeadas permitindo apenas as EN do tipo PESSOA e LOCAL.

Aqui um corpus em formato CoNLL é carregado e em seguida um fitro deixa apenas as categorias PESSOA e LOCAL e substitui as demais categorias pela máscara 'O'.

pToolNER = PortugueseToolNER()

pToolNER.loadCorpusInCoNLLFormat(
                 inputFilePath='InputCorpus.txt',
                 setEncoding='utf8',
                 sepTokenTag=' ')

pToolNER.filterCoNLLCorpusByCategories(
                    acceptableLabels=['PER', 'LOC'],
                    maskForUnacceptLabel='O',
                    sepTokenTag=' ')

pToolNER.generateOutputFile(
               outputFileName='FilteredCorpus.txt',
               sentences=pToolNER.sentencesTokenAndLabels,
               outputFormat='CoNLL',
	       shuffleSentences=False)

Como fazer a rotulção (sem uso de Máscara) de todos os arquivos .txt em uma pasta.

pToolNER = PortugueseToolNER()

pToolNER.loadNamedEntityModel('best-model.pt')

pToolNER.sequenceTaggingOnText(
               rootFolderPath='./PredictablesFiles',
               fileExtension='.txt',
               useTokenizer=True,
               maskNamedEntity=False,
               createOutputFile=True,
               outputFilePath='./TaggedTexts',
               outputFormat='plain',
               createOutputListSpans=True
               )

Como fazer rotulação de textos usando Máscara para categorias específicas de Entidades Nomeadas (EN).

Aqui as EN PESSOA e LOCAL serão substituídas por um único simbolo '[HIDDEN-INFO]'.

pToolNER = PortugueseToolNER()

pToolNER.loadNamedEntityModel('best-model.pt')

pToolNER.sequenceTaggingOnText(
               rootFolderPath='./PredictablesFiles',
               fileExtension='.txt',
               useTokenizer=True,
               maskNamedEntity=True,
               specialTokenToMaskNE='[HIDDEN-INFO]',
               sepTokenTag=' ',
               entitiesToMask=['B-PER', 'I-PER', 'B-LOC', 'I-LOC'],
               createOutputFile=True,
               outputFilePath='./TaggedTexts',
               outputFormat='plain',
               createOutputListSpans=True
               )

Como fazer rotulação de textos usando Máscara para EN e Lista auxiliar de EN.

pToolNER = PortugueseToolNER()

listStopNames = ['da', 'de', 'do', 'dos']
listNames = ['name name name', 'name', 'name name']

pToolNER.getUniqueNames(listNames, listStopNames)

pToolNER.loadNamedEntityModel('best-model.pt')

pToolNER.sequenceTaggingOnText(
               rootFolderPath='./PredictablesFiles',
               fileExtension='.txt',
               useTokenizer=True,
               maskNamedEntity=True,
               specialTokenToMaskNE='[HIDDEN-INFO]',
               sepTokenTag=' ',
               entitiesToMask=['B-PER', 'I-PER', 'B-LOC', 'I-LOC'],
               useAuxListNE=True,
               auxListNE=pToolNER.uniqueStringNames,
               createOutputFile=True,
               outputFilePath='./TaggedTexts',
               outputFormat='plain',
               createOutputListSpans=True
               )

Como fazer rotulação de sequencia de sentenças (On the fly) sem carregar arquivos de texto.

pToolNER = PortugueseToolNER()

listStopNames = ['da', 'de', 'do', 'dos']
listNames = ['name name name', 'name', 'name name']

pToolNER.getUniqueNames(listNames, listStopNames)

pToolNER.loadNamedEntityModel('best-model.pt')

pToolNER.sequenceTaggingOnTheFly(
			   textToPredict = 'Put Your Sentence Here.',
			   textId = 1,
			   useTokenizer=True,
			   useSentenceTokenize=True,
			   maskNamedEntity=True,
			   specialTokenToMaskNE='[HIDDEN-INFO]',
			   sepTokenTag=' ',
			   entitiesToMask=['B-PER', 'I-PER', 'B-LOC', 'I-LOC'],
			   useAuxListNE=True,
			   auxListNE=pToolNER.uniqueStringNames,
			   createOutputFile=True,
			   outputFilePath='./TaggedTexts',
			   outputFormat='plain',
			   createOutputListSpans=True
			   )

Anonimização de Entidades Nomeadas

Como fazer rotulação de sequencia de sentenças (On the fly) sem carregar arquivos de texto e lista auxiliar.

pToolNER = PortugueseToolNER()

pToolNER.loadNamedEntityModel('best-model.pt')

pToolNER.sequenceTaggingOnTheFly(
          textToPredict = 'Put Your Sentence Here.',
          textId = 1,
          useTokenizer=True,
          useSentenceTokenize=True,
          maskNamedEntity=True,
          specialTokenToMaskNE='[HIDDEN-INFO]',
          sepTokenTag=' ',
          entitiesToMask=['B-PER', 'I-PER', 'B-LOC', 'I-LOC'],
          useAuxListNE=False,
          createOutputFile=False,
	  createOutputListSpans=False
          )