VBCommons/parsers/DetectorClassifier.cls
2024-06-07 20:46:40 +03:00

51 lines
1.2 KiB
OpenEdge ABL

VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "DetectorClassifier"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
' ====== Classification entity detector =======
' Shared module version: 20220615
' Tested in:
' Depends on:
' Required reference: API_Python, ex_Python
Option Explicit
Private tags_ As String
Public Function Init(sTags$)
tags_ = sTags
End Function
Public Function Test(sText$) As Boolean
If tags_ = vbNullString Then _
Exit Function
Test = AccessPython.CallFunction(PY_MODULE_TEXT, "extract_entities", Array(sText)) <> Array()
End Function
Public Function ExtractFragments(sText$) As PC_ParsedData
Dim iData As New PC_ParsedData
On Error GoTo SKIP_PYTHON
Dim iResult As Variant
iResult = AccessPython.CallFunction(PY_MODULE_TEXT, "extract_entities", Array(sText))
On Error GoTo 0
Dim nItem&
For nItem = LBound(iResult) To UBound(iResult) Step 1
Dim nStart&: nStart = iResult(nItem, 0)
Dim nEnd&: nEnd = iResult(nItem, 1)
Dim nClass&: nClass = iResult(nItem, 2)
Call iData.AddItem(nStart, nEnd, nClass)
Next nItem
SKIP_PYTHON:
Set ExtractFragments = iData
End Function