2017-08-04 76 views
0

我目前使用NLP新增功能,並且需要關於如何解決此問題的指導。如何從文本中提取關係

我目前正在做一個過濾技術,我需要在數據庫中將數據標記爲正確或不正確。我得到了一個結構化的數據集,列和行。

但是,過濾條件是在一個文本文件中給我的。 一種過濾文本文件的例子可以是以下各項:

Values in the column ID which are bigger than 99 
Values in the column Cash which are smaller than 10000 
Values in the column EndDate that are smaller than values in StartDate 
Values in the column Name that contain numeric characters 

下面應品牌爲壞的那些條件的任何值。

但是,我想提取這些條件並將它們追加到我迄今爲止所做的程序中。

例如,對於上述條件,我想產生

`if ID>99` 
`if Cash<10000` 
`if EndDate < StartDate` 
`if Name LIKE %[1-9]%` 

我如何能實現使用斯坦福NLP上面的結果呢? (或任何其他NLP庫)。

回答

3

這看起來不像機器學習問題;這是一個簡單的解析器。你有一個簡單的語法,從中可以很容易地提取顯着特點:

  • 列名
  • 關係
  • 目標值目標列

由此產生的「行動準則」只是簡單地刪除「句法糖」這個詞,然後把這種關係 - 也可能是目標價值 - 轉換成它的象徵形式。

列舉詞庫中每個位置的所有關鍵詞。然後使用您選擇的實現語言中的基本字符串操作運算符來查找三個必需的字段。

鑑於以上數據,你的詞彙可能是這樣的:

column_trigger = "Values in the column" 
relation_dict = { 
    "are bigger than" : ">", 
    "are smaller than" : "<", 
    "contain"   : "LIKE", 
    ... 
} 
value_desc = { 
    "numeric characters" : "%[1-9]%", 
    ... 
} 

從這裏開始,使用標準的解析這些項​​目。如果你不熟悉,請查找一個簡單的句子語法的基礎知識在您最喜愛的編程語言,有規則,如如

SENTENCE => SUBJ VERB OBJ 

這是否讓你去?

+0

我知道你說的是什麼,但我無法看到我如何實施解決方案。你介意多延長一下你的答案嗎?我是這個話題的小菜鳥。另外,我將刪除機器學習標籤。感謝您指出了這一點 – SVCS1994