ภาษาของวันเวลา $now expression

Sathit Jittanupat
2 min readApr 30, 2017

--

ถ้าเราสามารถทำให้คอมพิวเตอร์สามารถเข้าใจวลี ที่เกี่ยวกับ วันเวลา ที่เป็นภาษาธรรมชาติของเรา เช่น วันนี้, เดือนนี้

เราจะเอาไปใช้ทำอะไร …

User interface

เมื่อเอาไปใช้กับ User Interface ช่วยให้เราสามารถใช้ input box ธรรมดา ได้โดยง่าย โดยไม่จำเป็นต้องใช้ widget อื่น

Database query

เราสามารถนำไปใช้กับ database query สำหรับข้อมูลวันที่ เพื่อสร้างเป็นค่าช่วงวันที่ ณ เวลาที่ร้องขอข้อมูล ซึ่งเป็นค่าวันที่ที่อ้างอิงกับวันที่ปัจจุบัน โดยใช้ query string ที่เป็น $now expression แทนที่จะเป็น absolute value

Date calculation

ประยุกต์ใช้คำนวณวันที่ เมื่อเลือกให้อ้างอิงกับ วันที่อื่น แทนที่จะเป็นวันที่วันนี้

เช่น เครดิต 30 วัน , อายุสัญญา 12 เดือน

เราสามารถใช้ $now expression คำนวณ หาวันที่ครบกำหนด ได้เช่นกัน

ตัวอย่าง expression

ตัวเลขโดดๆ

  • 5 → วันที่ 5 ที่ผ่านมา

วันที่/เดือน อย่างย่อ

  • 1/12 → วันที่ 1 เดือน 12 ที่ผ่านมา
  • 1–30/4 → งวดวันที่ 1 ถึง 30 เดือน 4 ที่ผ่านมา

เดือน/ปี อย่างย่อ

  • 4/60 → งวดวันที่ 1 ถึง 30 เดือน 4 ปี 2560 (2017)
  • 4/17 → เหมือนข้างบน ปีเป็น ค.ศ.
  • 4/2560 4/2017

เลขปี

  • 2559
  • 2016

ข้อความต่างๆ

มีมากมายหลากหลาย ตั้งแต่ ข้อความที่ชัดเจน เช่น

today วันนี้

yesterday วานนี้ เมื่อวานนี้ วันก่อน

monday วันจันทร์

this month เดือนนี้

last month เดือนที่แล้ว

this year ปีนี้

this quarter ไตรมาสนี้

this week สัปดาห์นี้

end of last month สิ้นเดือนที่แล้ว

begin of this year ต้นปีนี้

ข้อความที่ระบุ จำนวนงวดไปด้วย

7 days 7 วัน → งวด 7 วันนับจากวันนี้

last 7 days

next 7 days

compound expression

from begin of this year til end of last month

ตั้งแต่ ต้นปีนี้ ถึง สิ้นเดือนก่อน

1/1 30/4

แนวทางในอนาคต

กำหนดมาตรฐานของ expression

การพัฒนา $now expression นี้ เป็นงานที่ developer คนไทย ต้องทำเอง เพราะเกี่ยวข้องกับภาษาไทยโดยตรง ประเทศไทยเป็นหนึ่งในไม่กี่ประเทศ ที่ใช้ระบบปี 2 ระบบแบบเป็นธรรมชาติ คนไทยส่วนใหญ่สามารถเข้าใจ ปี 2016 และ ปี 2559 ได้โดยไม่สับสน

ภาษาธรรมชาติของไทย ที่เกี่ยวข้องกับวันเวลามีมากมาย การร่างมาตรฐาน input และ output ของ expression เพื่อใช้เป็นแนวทาง และ spec สำหรับการพัฒนาเพื่อใช้งาน $now expression ในวงกว้าง

ข้อความบางข้อความ อาจขึ้นอยู่กับเวลาขณะนั้น

  • ยอดขาย 1 เดือน

ถ้าวันนี้เป็นวันที่ 15

หมายถึงยอดขาย นับจากวันที่ 15 ของเดือนที่แล้ว จนถึง วันนี้

หรือหมายถึง ยอดขาย นับจากต้นเดือน จนถึงวันนี้ (logic นี้ใช้ไม่ได้ถ้าวันนี้เป็นวันที่ 1)

หรือหมายถึง ยอดขาย เต็มเดือน ของเดือนที่ผ่านมา (logic นี้ใช้ไม่ได้ถ้าวันนี้เป็นวันสิ้นเดือน)

ข้อความบางข้อความ ขึ้นอยู่กับบริบทการนำไปใช้

  • ยอดขาย 1 เดือน → หมายถึง 1 เดือนที่ผ่านมา
  • ยอดหนี้ที่ครบกำหนดภายใน 1 เดือน → หมายถึง 1 เดือนในอนาคต

จากตัวอย่างข้างต้น เห็นว่า การพิจารณาเฉพาะ phase ส่วนที่เป็น $now expression ในบางบริบท อาจได้คำตอบที่ไม่ตรงกับเจตนา

ความละเอียดในระดับ ช่วงเวลาของวัน

เมื่อเริ่มมีการนำ $now expression ไปช่วยในการสอบถามข้อมูลแบบ real time อย่าง ใน chat bot เราพบตัวอย่าง คำถามจาก user ในระดับช่วงเวลาที่ละเอียดในระดับเวลาของวัน หรือ ระดับ ชม. หรือ นาที

  • ยอดขาย ครึ่งวันเช้า

— — — — — — — — — — — — — — — — — — — — — — — — — — —

Sathit Jittanupat 2017-04-30

--

--

No responses yet