{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/rational-recurrences","title":"Rational Recurrences","arxiv_id":"1808.09357","date":"2018-08-28","proceeding":"EMNLP 2018 10","authors":["Hao Peng","Roy Schwartz","Sam Thomson","Noah A. Smith"],"abstract":"Despite the tremendous empirical success of neural models in natural language\nprocessing, many of them lack the strong intuitions that accompany classical\nmachine learning approaches. Recently, connections have been shown between\nconvolutional neural networks (CNNs) and weighted finite state automata\n(WFSAs), leading to new interpretations and insights. In this work, we show\nthat some recurrent neural networks also share this connection to WFSAs. We\ncharacterize this connection formally, defining rational recurrences to be\nrecurrent hidden state update functions that can be written as the Forward\ncalculation of a finite set of WFSAs. We show that several recent neural models\nuse rational recurrences. Our analysis provides a fresh view of these models\nand facilitates devising new neural architectures that draw inspiration from\nWFSAs. We present one such model, which performs better than two recent\nbaselines on language modeling and text classification. Our results demonstrate\nthat transferring intuitions from classical models like WFSAs can be an\neffective approach to designing and understanding neural models.","url_abs":"http://arxiv.org/abs/1808.09357v1","url_pdf":"http://arxiv.org/pdf/1808.09357v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"rational-recurrences","repo_url":"https://github.com/Noahs-ARK/rational-recurrences","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"language-modeling","task_name":"Language Modeling"},{"task_slug":"language-modelling","task_name":"Language Modelling"},{"task_slug":"text-classification","task_name":"Text Classification"},{"task_slug":"text-classification-1","task_name":"text-classification"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1808.09357","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1808.09357"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Noahs-ARK/rational-recurrences","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_honours":1,"ran_violates":1,"unverified":11},"by_repo_kind":{"official":{"samples":13,"ran":2,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"9910e2fc297f8665","entry":"identity","repo":"Noahs-ARK/rational-recurrences","repo_kind":"official","path":"semiring.py","file_url":"https://github.com/Noahs-ARK/rational-recurrences/blob/HEAD/semiring.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9910e2fc297f8665"}},{"code_sha256_prefix":"f017532fc389cbfe","entry":"str2bool","repo":"Noahs-ARK/rational-recurrences","repo_kind":"official","path":"classification/train_classifier.py","file_url":"https://github.com/Noahs-ARK/rational-recurrences/blob/HEAD/classification/train_classifier.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f017532fc389cbfe"}},{"code_sha256_prefix":"0872bd92b43d3638","entry":"RRNN_Compute_CPU","repo":"Noahs-ARK/rational-recurrences","repo_kind":"official","path":"rrnn.py","file_url":"https://github.com/Noahs-ARK/rational-recurrences/blob/HEAD/rrnn.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0872bd92b43d3638"}},{"code_sha256_prefix":"e9b5db20aa3c2994","entry":"clean_str","repo":"Noahs-ARK/rational-recurrences","repo_kind":"official","path":"classification/dataloader.py","file_url":"https://github.com/Noahs-ARK/rational-recurrences/blob/HEAD/classification/dataloader.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e9b5db20aa3c2994"}},{"code_sha256_prefix":"a44cd456a2bbbef2","entry":"create_batches","repo":"Noahs-ARK/rational-recurrences","repo_kind":"official","path":"language_model/train_lm.py","file_url":"https://github.com/Noahs-ARK/rational-recurrences/blob/HEAD/language_model/train_lm.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a44cd456a2bbbef2"}},{"code_sha256_prefix":"ffb793bae7c75c69","entry":"eval_model","repo":"Noahs-ARK/rational-recurrences","repo_kind":"official","path":"classification/train_classifier.py","file_url":"https://github.com/Noahs-ARK/rational-recurrences/blob/HEAD/classification/train_classifier.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ffb793bae7c75c69"}},{"code_sha256_prefix":"52a2958712db2837","entry":"one","repo":"Noahs-ARK/rational-recurrences","repo_kind":"official","path":"semiring.py","file_url":"https://github.com/Noahs-ARK/rational-recurrences/blob/HEAD/semiring.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"52a2958712db2837"}},{"code_sha256_prefix":"26599e150bedbc60","entry":"read_MR","repo":"Noahs-ARK/rational-recurrences","repo_kind":"official","path":"classification/dataloader.py","file_url":"https://github.com/Noahs-ARK/rational-recurrences/blob/HEAD/classification/dataloader.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"26599e150bedbc60"}},{"code_sha256_prefix":"1855e1e72c54dfb0","entry":"read_corpus","repo":"Noahs-ARK/rational-recurrences","repo_kind":"official","path":"language_model/train_lm.py","file_url":"https://github.com/Noahs-ARK/rational-recurrences/blob/HEAD/language_model/train_lm.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1855e1e72c54dfb0"}},{"code_sha256_prefix":"bb9a0e505460a9eb","entry":"read_corpus","repo":"Noahs-ARK/rational-recurrences","repo_kind":"official","path":"classification/dataloader.py","file_url":"https://github.com/Noahs-ARK/rational-recurrences/blob/HEAD/classification/dataloader.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"bb9a0e505460a9eb"}},{"code_sha256_prefix":"25b388c0d2d1ecab","entry":"repackage_hidden","repo":"Noahs-ARK/rational-recurrences","repo_kind":"official","path":"language_model/train_lm.py","file_url":"https://github.com/Noahs-ARK/rational-recurrences/blob/HEAD/language_model/train_lm.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"25b388c0d2d1ecab"}},{"code_sha256_prefix":"9b454a14330f8001","entry":"train_model","repo":"Noahs-ARK/rational-recurrences","repo_kind":"official","path":"classification/train_classifier.py","file_url":"https://github.com/Noahs-ARK/rational-recurrences/blob/HEAD/classification/train_classifier.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9b454a14330f8001"}},{"code_sha256_prefix":"43b57409cd1e6b6f","entry":"zero","repo":"Noahs-ARK/rational-recurrences","repo_kind":"official","path":"semiring.py","file_url":"https://github.com/Noahs-ARK/rational-recurrences/blob/HEAD/semiring.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"43b57409cd1e6b6f"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}