{"title":"Experiments in natural language processing","authors":"S. Murrell, R. Plant","doi":"10.1145/98949.99099","DOIUrl":null,"url":null,"abstract":"OF WORK IN PROGRESS Recent developments in functional programming techniques have made the field of natural language processing more amenable to experimentation. Conventional programming languages, and the programming methods normally associated with them, which due to their familiarity, seem to be satisfactory for the production of natural language applications, do in fact restrict creativity. Their cumbersome syntax and the inflexibility of their control structures and order of execution make the act of programming, which should be nothing more than the transcription of organised thoughts, into a titanic task. Frequently, coding is harder work than design. Functional programming languages [1] are normally very compact, and have little or no redundancy in their syntax. While this could be dangerous for critical systems, it can speed up prototyping by an order of magnitude. Functional languages also may have a different execution strategy, known as Lazy Evaluation [2J, under which programs take on a non-algorithmic nature, which also simplifies the design process. Experiments have shown that a powerful form of parallel processing may be incorporated into a functional system [3]. The ability to perform computationsconcurrently.withoutbeing concerned with inter-process communications or scheduling, greatly simplifies many tasks that are normally complex (e.g., resolution in logic programming, and searching data-structures). Natural language processing is a very complex domain, which has never been conquered. One of the reasons for this (apart, of course from man’s incomplete knowledge of his languages) has been our inability to perform creative experiments at a reasonable rate. Functional programming systems alleviate this inability. It is the aim of our research to explore in detail the applicability of new and existing functional programming techniques to the areas of parsing and understanding complex grammars, and processing semantic networks in the context of a natural language front end to an intelligent data retrieval system. We have already found that these techniques make a significant contribution to development in some of the major areas. As an example, we can implement the pure reasoning features of Prolog in a 20 line program, which took about one hour to produce and debug. This implementation is very easy to read, and thus makes experimentation with the reasoning methods fast and convenient. Our current investigations are centered on the production of a simple unification of the syntactic and semantic processing involved in the understandingofnaturallanguageinput. Preliminary results from experiments with a non-backtracking parser for ambiguous grammars indicate that positive results may be expected and that the techniques of functional programming may successfully be applied to practical, non-trivial","PeriodicalId":409883,"journal":{"name":"ACM-SE 28","volume":"41 3 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1990-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"ACM-SE 28","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/98949.99099","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0
Abstract
OF WORK IN PROGRESS Recent developments in functional programming techniques have made the field of natural language processing more amenable to experimentation. Conventional programming languages, and the programming methods normally associated with them, which due to their familiarity, seem to be satisfactory for the production of natural language applications, do in fact restrict creativity. Their cumbersome syntax and the inflexibility of their control structures and order of execution make the act of programming, which should be nothing more than the transcription of organised thoughts, into a titanic task. Frequently, coding is harder work than design. Functional programming languages [1] are normally very compact, and have little or no redundancy in their syntax. While this could be dangerous for critical systems, it can speed up prototyping by an order of magnitude. Functional languages also may have a different execution strategy, known as Lazy Evaluation [2J, under which programs take on a non-algorithmic nature, which also simplifies the design process. Experiments have shown that a powerful form of parallel processing may be incorporated into a functional system [3]. The ability to perform computationsconcurrently.withoutbeing concerned with inter-process communications or scheduling, greatly simplifies many tasks that are normally complex (e.g., resolution in logic programming, and searching data-structures). Natural language processing is a very complex domain, which has never been conquered. One of the reasons for this (apart, of course from man’s incomplete knowledge of his languages) has been our inability to perform creative experiments at a reasonable rate. Functional programming systems alleviate this inability. It is the aim of our research to explore in detail the applicability of new and existing functional programming techniques to the areas of parsing and understanding complex grammars, and processing semantic networks in the context of a natural language front end to an intelligent data retrieval system. We have already found that these techniques make a significant contribution to development in some of the major areas. As an example, we can implement the pure reasoning features of Prolog in a 20 line program, which took about one hour to produce and debug. This implementation is very easy to read, and thus makes experimentation with the reasoning methods fast and convenient. Our current investigations are centered on the production of a simple unification of the syntactic and semantic processing involved in the understandingofnaturallanguageinput. Preliminary results from experiments with a non-backtracking parser for ambiguous grammars indicate that positive results may be expected and that the techniques of functional programming may successfully be applied to practical, non-trivial