回答
要做到這一點「正常」,你幾乎需要定義某種語法,然後可能使用LALR解析器或一些工具,如YACC,野牛或萊克斯建立一個解析器。假設你不想這樣做,它的strpos()ftw!
沒有一噸的語言建模的,我認爲唯一的辦法是有一個巨大的配料表和配方尋找他們。數量應該是成分之前的詞。
有對Java非常相似question。簡而言之,您需要詞典(例如成分)和術語(註釋)中的正則表達式語言。你可以做到這一點在Java中,並通過Web服務從PHP調用它,或者你可以嘗試在PHP重新實現它(注意,在第二種情況下,你可能有顯著放緩)。
有openNlp在java中的命名實體提取,可以接你,你正在尋找看到什麼:http://opennlp.sourceforge.net/models-1.5/
然後你可以使用PHP,Java連接器得到的結果到PHP。
如果你想迅速做到這一點,並收集資源收集的最小量,你也許可以想出一些好的啓發和一些正則表達式。
既然你說這個列表是「有點格式化,」我會假設工作有每行一個成分指令。
我首先想出一個測量名稱列表,這是一個相對封閉的類(我們稱之爲語言學),如$measurements=['cup', 'tablespoon', 'teaspoon', 'pinch', 'dash', 'to taste', ...]
。你甚至可以拿出幾個項目映射到一個標準化的值的字典(所以$measurements={cup:['cup', 'c'], tablespoon:['tablespoon', 'tbsp', 'tablesp', ...], ...}
或諸如此類的東西。)
然後在每一行,你可以找到測量單位如果是在你的字典。接下來,查找數字(可以格式化爲小數 - 例如1.5 - 或複雜的分數 - 例如2 1/2或2-1/2),並假設這是您需要的單位的數量。如果沒有號碼,那麼你可以假設單位是一個(如可能與「味」之類的情況下)。
最後,你可以假設任何事情所剩下的是實際的成分。
我想這啓發將覆蓋你的情況下75-80%。你仍然會有很多角落案例,比如當配方需要「2個桔子」時,或者更糟糕! - 「2個桔子汁」。在這些情況下,您可能希望將它們(在某種離線管理期間)添加爲例外情況,或讓他們「沒問題」,讓他們處理不當。
- 1. 自然語言處理庫
- 2. 自然語言處理庫
- 3. 自然語言處理
- 4. 自然語言處理/命令(序言)
- 5. 自然語言處理在Java中(NLP)
- 6. Ruby中的自然語言處理
- 7. 自然語言處理:爲word2vec
- 8. C++中的自然語言處理
- 9. 排序自然語言處理
- 10. 自然語言處理工具
- 11. 自然語言處理詞彙聯想
- 12. java中的自然語言處理庫
- 13. Python與Java的自然語言處理
- 14. iPhone自然日期語言處理
- 15. 自然語言處理 - 類似於ngram
- 16. 自然語言處理 - Truecaser分類器
- 17. 自然語言處理的最大熵
- 18. Windows 8自然語言處理8
- 19. Android的自然語言處理
- 20. 自然語言處理學習哪種語言或工具?
- 21. 自然語言處理(syntatctic,語義,語用)分析
- 22. 自然語言文字在PHP
- 23. 良好示例:英語解析/自然語言處理
- 24. 如何在Android中使用Google自然語言處理雲API
- 25. 機器學習自然語言處理 - 自定義翻譯
- 26. 最新的好語言和書籍的自然語言處理,基本知識
- 27. c#是適用於Chatterbot開發的語言,涉及自然語言處理嗎?
- 28. 機器理解自然語言 - NLP
- 29. IBM Bluemix自然語言理解API
- 30. 自然語言理解 - 分析
定義 「* *有些格式化」。 –
說「1杯牛奶」,「牛奶,1杯」,「少許鹽」,「2 250毫升牛奶罐」...... – StackOverflowNewbie
http://stackoverflow.com/questions/4457830/nlp-programming -tools-使用的PHP – rid